利用oracle控制文件实现大批量数据的入库操作,效率比sql脚本文件要高很多。
使用ctl控制文件步骤如下:
1. 制作ctl文件 test.ctl
load data
infile ‘d:\test.txt‘ --数据文件,数据源文件
append into table table_name --数据文件导入的目标表
Fields terminated by "@[email protected]" --字段分隔符,建议以特殊字符作为字段分隔符
Optionally enclosed by ‘"‘ --定界符
trailing nullcols --允许跳过列
( col1, col2, col3, col4) ---表中的字段
----以上斜体部分文字请根据实际情况替换
2. 制作数据源文件
文件中只有数据,数据列之间用“@[email protected]”分隔 (可借助命令或者工具导出数据,然后再通过UE编辑)
3. 执行ctl文件
命令行cmd下执行 ,cd 至oracle控制文件目录下,
执行命令:sqlldr oracle/[email protected] control =test.ctl, ERRORS=50000 , LOAD=450000
4. 执行结果
执行结果将会在oracle的控制文件下生成执行的控制文件名称对应的日志文件(input.log)详细记录了操作结果。
5. 当加载大量数据时(大约超过10GB),最好抑制日志的产生:
SQL>ALTER TABLE RESULTXT nologging;
这样不产生REDO LOG,可以提高效率
---------------------------示例---------------------------------------------
--2014年11月26日 星期三 10时25分12秒 --z_org.ctl
--向表z_org里加载数据
load data
infile ‘z_org.txt‘--数据文件
badfile ‘z_org.bad‘
replace into table z_org --替换表 z_org内容
fields terminated by ‘@[email protected]‘ --字段分隔符
TRAILING NULLCOLS ---允许跳过列
(
gather_date DATE "YYYY-MM-DD",
xaccount ,
name ,
sms_frees ,
freesign ,
sms_lowamt ,
sms_lowamx ,
mp_l_lmt ,
mp_auths ,
mpausign ,
mp_rem_ppl ,
mpremsig ,
mp_bal ,
mpbalsig ,
cal_limit ,
cal_auths ,
cal_auths_flag ,
cal_bal ,
cal_bal_flag ,
cal_remppl ,
cal_remppl_flag ,
sms_freeyn ,
bal_mppl ,
bal_mpplx ,
bal_l_mppl ,
daily_rep ,
product ,
)