sql load导大数据

来源:互联网 发布:编程大师访谈录 豆瓣 编辑:程序博客网 时间:2024/04/27 18:27

options(skip=0,rows=128)
load data infile 'E:\客户资料\华润\普仁鸿历史数据\普仁鸿历史数据V6\历史数据上交\prh_in.csv' 
append into table t_ct_rebatsale fields terminated by ','
trailing nullcols(
EXCELNO ,
REBATSALENO,
compid,
CUSTOMID_EXTNO,
BUSNAME,
NOTES,
RECKONERNAME,
RETURNREASON,
CREATEUSER_EXTNO,
CREATETIME " to_date(substr(:CREATETIME,0,19),'''yyyy-mm-dd hh24:mi:ss''')",
EXECDATE " to_date(substr(:EXECDATE,0,19),'''yyyy-mm-dd hh24:mi:ss''')",
cashtypename  "replace(:cashtypename ,' ','')",
WARECODE,
WAREQTY  "abs(:WAREQTY)",
MAKENO,
MAKEDATE " to_date(substr(:MAKEDATE,0,19),'''yyyy-mm-dd hh24:mi:ss''')",
INVALIDATE " to_date(substr(:INVALIDATE,0,19),'''yyyy-mm-dd hh24:mi:ss''')",
PURPRICE "nvl(:purprice,0.00)",
whlprice,
PURTAX ,
SALETAX,
SALER_EXTNO,
VENCUSCODE
)


说明:在操作类型 truncate 位置可用以下中的一值:

1) insert     --为缺省方式,在数据装载开始时要求表为空
2) append  --在表中追加新记录
3) replace  --删除旧记录(用 delete from table 语句),替换成新装载的记录

4) truncate --删除旧记录(用 truncate table 语句),替换成新装载的记录


sqlldr userid=h2/\"hydee@soft123\"@BJDB control=E:\Xiaomi\v_purprice.ctl log=E:\Xiaomi\erplog.txt

4) 对于超大数据文件的导入就要用并发操作了,即同时运行多个导入任务.

  sqlldr   userid=/   control=result1.ctl   direct=true   parallel=true   
  sqlldr   userid=/   control=result2.ctl   direct=true   parallel=true   
  sqlldr   userid=/   control=result2.ctl   direct=true   parallel=true  

  当加载大量数据时(大约超过10GB),最好抑制日志的产生:   
  
  SQL>ALTER   TABLE   RESULTXT   nologging; 
  
  这样不产生REDO LOG,可以提高效率。然后在 CONTROL 文件中 load data 上面加一行:unrecoverable,  此选项必须要与DIRECT共同应用。   
  
  在并发操作时,ORACLE声称可以达到每小时处理100GB数据的能力!其实,估计能到 1-10G 就算不错了,开始可用结构 相同的文件,但只有少量数据,成功后开始加载大量数据,这样可以避免时间的浪费。




0 0
原创粉丝点击