首页 > 代码库 > oracle_利用ctl文件实现批量导入

oracle_利用ctl文件实现批量导入

  利用oracle控制文件实现大批量数据的入库操作,效率比sql脚本文件要高很多。

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

 

1. 制作ctl文件 test.ctl

load   data 

infile   ‘d:\test.txt‘   --数据文件,数据源文件

append   into   table   table_name --数据文件导入的目标表

Fields terminated by "@_@"   --字段分隔符,建议以特殊字符作为字段分隔符

Optionally enclosed by ‘"‘ --定界符

trailing   nullcols   --允许跳过列

(    col1,    col2,    col3,    col4)   ---表中的字段

----以上斜体部分文字请根据实际情况替换

 

 2. 制作数据源文件

文件中只有数据,数据列之间用“@_@”分隔  (可借助命令或者工具导出数据,然后再通过UE编辑)

 

3. 执行ctl文件

命令行cmd下执行 ,cd 至oracle控制文件目录下,

执行命令:sqlldr oracle/oracle@orcl  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 ‘@_@‘ --字段分隔符
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         ,
)

 

oracle_利用ctl文件实现批量导入