sqlldr

ORACLE外部表总结

有些话、适合烂在心里 提交于 2020-04-07 20:13:12
ORACLE外部表总结 https://www.cnblogs.com/kerrycode/p/3894260.html 外部表介绍 ORACLE外部表用来存取数据库以外的文本文件(Text File)或ORACLE专属格式文件。因此,建立外部表时不会产生段、区、数据块等存储结构,只有与表相关的定义放在数据字典中。外部表,顾名思义,存储在数据库外面的表。当存取时才能从ORACLE专属格式文件中取得数据,外部表仅供查询,不能对外部表的内容进行修改(INSERT、UPDATE、DELETE操作)。不能对外部表建立索引。因为创建索引就意味着要存在对应的索引记录。而外部表其实在没有存储在数据库中。故在外部是无法建立索引的。如果硬要建立的话,则系统会提示“操作在外部组织表上不受支持”的错误提示。 Notice: 外部表是ORACLE 9i后引入的。 外部表特征 (1) 位于文件系统之中(一定要在数据库服务器中,而不是其它网络路径),按一定格式分割, 例如@#$等,文本文件或者其他类型的文件可以作为外部表。   (2) 对外部表的访问可以通过SQL语句来完成,而不需要先将外部表中的数据装载进数据库中。   (3) 外部数据表都是只读的,因此在外部表不能够执行DML操作,也不能创建索引。   (4) ANALYZE语句不支持采集外部表的统计数据,应该使用DMBS

SQL*Loader

梦想与她 提交于 2020-03-28 15:21:47
SQL*Loader 1外部表简介 ⑴外部表并不实际存在,外部文件中的数据字段只是映射的外部表列,并不是实际装载到其中 ⑵涉及外部表,只能用select,不能用insert、update、delete ⑶外部表是只读表,不能进行索引 2.SQL*Loader生成外部表创建语句 external_table=not_used 默认值 external_table=generate_only不装载任何数据, 而是生成控制文件中描述的装载外部表所需的所有SQL语句, 并将这些SQL语句放入SQL*Loader日志文件 external_table=execute 执行这些SQL语句以创建外部表并进行装载 external_table=generate_only选项在SQL*Loader日志文件中输出一下信息: ①create directory语句 ②外部表的完整create table语句,并带有必要的access parameters ③装载Oracle表的insert语句 ④目录和外部表的delete语句 创建test_emp表 SCOTT@ora11g>select dbms_metadata.get_ddl('TABLE','EMP') from dual; DBMS_METADATA.GET_DDL('TABLE','EMP') -----------------------

sqlloader的使用------windows版

家住魔仙堡 提交于 2020-03-10 10:38:39
一 . 作用 SQL*LOADER 是 ORACLE 的数据加载工具,用来将文件导入到 ORACL 数据库,可以导入一个表或者多个表,甚至可以在导入时修改数据。 二 . ORACLE 下载地址 sqlloader 需要电脑上有 sqlldr 文件才可实现传输功能,如果没有无法使用 sqlloader ,由于网上有很多 ORACLE 是精简版本的,精简版安装完成后 oracle 包中没有 sqlldr.exe 这个文件,这里我提供了一个下载地址,这个版本中有 sqlldr , sqlplus ,本人亲测过,将链接分享给大家。 https://pan.baidu.com/s/1IxCOSZmzM3iZfFuWstW_jw 提取码:bf9m 三 . 如何确定电脑中有没有 sqlldr 文件 两种方式: ① 在 oracle 目录中的 bin 下看有没有 sqlldr.exe 文件,本人安装目录为 D:\app\Administrator\product\11.2.0\dbhome_1\BIN ② 直接在 dos ( win+R )中输入“ sqlldr ”,如果出现“ sqlldr 不是内部或外部命令,也不是可运行程序”字样,说明电脑中没有 sqlldr.exe 这个文件。如果出现如下所示,说明 sqlldr 安装成功。 四 . 实现 txt 文件导入到数据库(较简单) 1. 创建表结构

使用sqlldr向Oracle导入大的文本(txt)文件

梦想的初衷 提交于 2020-03-06 19:09:30
我们有多种方法可以向Oracle数据库里导入文本文件,但如果导入的文本文件过大,例如5G,10G的文本文件,有些方法就不尽如意了,例如PLSQL Developer中的导入文本功能,如果文本文件过大,不仅导入速度太慢,中间还容易出错。这时Sqlldr就能大显身手了,Sqlldr可以每秒向Oracle插入5W条数据,可以自定义控制文件,进行导入控制,而且导入过程不易出错,下面简易记录导入过程。 1.Sqlldr导入控制文件说明 1 load data 2 infile '/home/oracle/42.txt' //文本文件的绝对位置 3 append into table doupoidx            //要导入的表名称 4 fields terminated by ','             //分隔符定义,这里是逗号 5 OPTIONALLY ENCLOSED BY '"'          //过滤"号 6 TRAILING NULLCOLS              //对应字段的顺序。 7 ( 8 time TimeStamp 'yyyy-mm-dd hh24:mi:ss', 9 price, 10 volume, 11 interest 12 ) 2.在Oracle用户下执行导入命令 sqlldr userid=scott/oracle@orcl

Oracle Instanc Client安装命令工具

廉价感情. 提交于 2020-01-09 14:29:28
条件 1.Linux RHEL 6.X X86_64操作系统 2.从安装Oracleserver的server此次收购Oracle相关文件(同OS) 软件下载 从Oracle包: 1) instantclient-basic-linux.x64-11.2.0.4.0.zip (59.282MB) 2)instantclient-sqlplus-linux.x64-11.2.0.4.0.zip(815KB) 3)instantclient-sdk-linux.x64-11.2.0.4.0.zip(629KB) 4)instantclient-jdbc-linux.x64-11.2.0.4.0.zip(1.572MB) Oracle软件包的下载网址例如以下: http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html 配置过程 配置过程关键是环境变量的配置,请依据自己实际情况进行配置。 配置SQLPLUS 1.使用root用户登录。创建文件夹:mkdir -p /opt/oracle 2.将全部的软件包解压到/opt/oracle文件夹下: # unzp instantclient-basic-linux.x64-11.2.0.4.0.zip-d /opt/oracle 注:全部文件将自己主动解压到/opt

sqlldr用法

限于喜欢 提交于 2019-12-30 02:46:43
SQL*LOADER是ORACLE的数据加载工具,通常用来将操作系统文件迁移到ORACLE数据库中。SQL*LOADER是大型数据仓库选择使用的加载方法,因为它提供了最快速的途径(DIRECT,PARALLEL)。现在,我们抛开其理论不谈,用实例来使您快速掌握SQL*LOADER的使用方法。   首先,我们认识一下SQL*LOADER。    在NT下,SQL*LOADER的命令为SQLLDR,在UNIX下一般为sqlldr/sqlload。   如执行:d:\oracle>sqlldr SQL*Loader: Release 8.1.6.0.0 - Production on 星期二 1月 8 11:06:42 2002 (c) Copyright 1999 Oracle Corporation. All rights reserved. 用法: SQLLOAD 关键字 = 值 [,keyword=value,...] 有效的关键字: userid -- ORACLE username/password control -- Control file name(控制文件) log -- Log file name( 记录的日志文件 ) bad -- Bad file name(坏数据文件) data -- Data file name(数据文件) discard --

sqlldr导入数据(以PostgreSql>>>Oracle为例)

纵然是瞬间 提交于 2019-12-30 02:44:05
1.在目标数据库中创建表   1.1点击源表,复制创建语句   1.2 修改数据类型以匹配目标数据库,如:     字符串类型:character varying(20)>>>varchar2(20)     数字类型:numeric(19,2)>>>number(19,2)     时间戳:timestamp without time zone>>>timestamp或date   1.3 其他     一般字符串类型需要加长长度,不然有时会插不进去数据,不知为什么;     P和O数据库的not null default * 语句位置刚好相反; 2.导出csv格式数据   copy call to '/tmp/call.csv' DELIMITER ',' NULL '' CSV [QUOTE '"' FORCE QUOTE 跟这个表的所有列名] 这样就可以将数据导出了,需要注意的是:   ①有时数据量较大会出现导出失败,如 解决办法:用select的方式导出   ②[QUOTE '"' FORCE QUOTE 跟这个表的所有列名的 数组 形式]     没用过,表示给每个列的数据都加上“”,在PostgreSql中,获取表的所有列名的数组形式的语句如下: 1 SELECT array_to_string(array( 2 select attname from pg

sqlldr

限于喜欢 提交于 2019-12-22 14:00:51
由于最近做一个项目 考虑到插入数据库效率的问题, 需要将 .csv格式的文本文件导入到 oracle数据库当中 。 1 首先导入 oracle 的方法有很多 , 对于不同需求有不同的导入方式 , 我在这里就说一下 sqlldr 的方法 。 使用sqlldr 将文本文件导入 oracle中确切说只需要两步 。 第一步: 写一个 ctl 格式的控制文件 CTL 控制文件的内容 : (我会写一个模板和一个样例) 1) insert --为缺省方式,在数据装载开始时要求表为空 2) append --在表中追加新记录 3) replace --删除旧记录(用 delete from table 语句),替换成新装载的记录 4) truncate --删除旧记录(用 truncate table 语句),替换成新装载的记录 模板 : load data -- 1. 控制文件标识 infile 'xxx.csv' -- 2. 要导入的数据文件名 linuk系统路径:/.../... windows系统路径:D:/.... insert into table test -- 3. 将文件插入到数据库的 test 表中 fields terminated by ',' -- 4. 用于分割一行中各个属性值的符号(例如每个属性值用逗号 分割 , ‘ ,’) optionally enclosed

Oracle 的SQL*LOADER中optionally enclosed的作用

柔情痞子 提交于 2019-12-18 10:44:42
表示数据应由特殊字符括起来。也可以括在 TERMINATED 字符内。使用 OPTIONALLY 要同时用 TERMINLATED 。 ENCLOSED 指两个分界符内的数据。如果同时用 ENCLOSED 和 TERMINAED ,则它们的顺序决定计算的顺序。 首先创建一张表,建表语句如下: create table sqlldr_optionally_enclosed ( NO int , filed1 varchar2 ( 20 ), filed2 varchar2 ( 20 )); 控制文件如下: load data infile 'sqlldr_optionally_enclosed.txt' replace into table sqlldr_optionally_enclosed fields terminated by ',' optionally enclosed by '"' TRAILING NULLCOLS (No char, filed1 char, filed2 char) 数据文件 sqlldr_optionally_enclosed.txt 的内容如下: 1,a,b 2,"a","b" 3,""a"",b 4,""a"",""b"" 5,"""a""","""b""" 6,"a,b 7,""a,b 8,"""a,b 9,a",b 10,a"",b 11

利用sqluldr2和sqlldr实现Oracle下快速导出导入及字段包含换行回车的解放方法

独自空忆成欢 提交于 2019-12-06 14:02:13
官方说法:Sqluldr2(SQL * UnLoader 第二版)是一个灵活与强大的 Oracle 文本导出程序。 可能很多人对它不是很熟悉,虽然是很小的一个工具,但是功能比较完善,所有我都想到的需求,它都能提供。 尤其是支持linux下的管道和返回状态,简直太棒了。 sqluldr2 scott/tiger … file=- | sqlldr control=… 如上所示,在从 Oracle 向 Oracle 迁移数据时,简单高效,切实的解决了用户的痛点。 另外还支持根据条数或者大小分割到处文件。例如每100万条数据存放一个文件或者限制每个文件为1G。 还支持口令加密加密,GZIP压缩,SQL * Loader 的控制文件,针对MySQL特殊优化,简直不能更贴心了。 具体用法大家参考官方文档: http://www.onexsoft.com/software/sqluldr2.pdf 本文旨在解决另外一个问题,在将数据导成文件时,如果字段中包含回车或者换行,就会破坏数据格式,导致数据没法正常导入。 最简单的解决方法就是在查询SQL中将回车换行符替换掉 select replace(replace(column,chr(10),''),chr(15),'') from TABLE_NAME; 但是个人感觉这种方法不是很好,因为你不知道哪些字段可能包含回车和换行