日期:2014-05-16  浏览次数:20526 次

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

利用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,可以提高效率?