利用oracle控制文件实现大批量数据的入库操作

2014-11-24 09:21:33 · 作者: · 浏览: 0

利用oracle控制文件实现大批量数据的入库操作,效率比sql脚本文件要高很多。
一个300M的数据文件,ctl文件的入库大概在20mins左右,sql脚本文件则需要2h左右。

使用ctl控制文件步骤如下:

1. 制作ctl文件

load data
infile 'E:\test.log' --数据文件,上一片文章导出的
append into table fm.tb_team_info

Fields terminated by "," --字段分隔符
Optionally enclosed by '"' --定界符
trailing nullcols --允许跳过列
(
TEAMID,
AREA_ID,
CREATE_PERSONNEL_ID,
TEAM_CODE

)

E:\test.log: 数据文件,此例中用日志文件作为数据源
fm.tb_team_info: 需要导入的数据表

2. 制作数据源文件
文件中只有数据,数据列之间用“,”分隔

3. 执行ctl文件
cd 至oracle控制文件目录下
执行命令:sqlldr fm/zaixin@189Ericsson control = input.ctl, ERRORS=50000 , LOAD=450000

4. 执行结果、
执行结果将会在oracle的控制文件下生成执行的控制文件名称对应的日志文件(input.log)详细记录了操作结果。

5. 当加载大量数据时(大约超过10GB),最好抑制日志的产生:
SQL>ALTER TABLE RESULTXT nologging;
这样不产生REDO LOG,可以提高效率

作者“zzhangyongjie”