利用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 ,
)
