1. SQL*LOADER是ORACLE的数据加载工具,通常用来将操作系统文件迁移到ORACLE数据库中。
2. 在NT下,SQL*LOADER的命令为SQLLDR,在UNIX下一般为sqlldr/sqlload(在/oracle/product/10.2.0/bin目录下可以看到存在sqlldr)。
3. 用法:
4. 当加载大量数据时,可以抑制日志的产生:
a)
5. 控制文件.ctl
load
infile
append
fields
(TP_CUSTOMER_ID ,
ECIF_NO ,
a、insert,为缺省方式,在数据装载开始时要求表为空
b、append,在表中追加新记录
c、replace,删除旧记录(全部的记录),替换成新装载的记录
d、truncate,同上先删除再新增
6. 范例:
a)
b)
c)
7. sqlldr用到的主要参数
1)
2)
3)
4)
5)
6)
7)
8)
9)
10) errors –允许的错误记录数,超过则终止任务(默认50)
11) rows -- Number of rows inconventional path bind array or between direct path datasaves(每次提交的记录数,默认: 常规路径 64, 直接路径 全部,所以使用直接路径的话,效率会比普通的好太多太多)
12) bindsize -- Size of conventional pathbind array in bytes(每次提交记录的缓冲区的大小,字节为单位,默认256000)
13) silent --禁止输出信息(header,feedback,errors,discards,partitions)
14) direct – 使用直通路径方式导入 (默认FALSE)
如果表中有索引的话,是不能指定direct=TRUE的,除非使用skip_index_maintenance=TRUE,这个就是在导入的时候忽略索引,所以在数据导入完毕以后,查看索引的状态应该都是无效的,需要重建之,如下SQL:select
alter
重新建立索引要比新建索引快。
15) parallel -- 并行导入
16) skip_unusable_indexes --disallow/allow unusable indexes or indexpartitions(默认FALSE)
17) skip_index_maintenance -- do notmaintain indexes, mark affected indexes asunusable(默认FALSE)