日期:2014-05-16 浏览次数:20557 次
利用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,可以提高效率?