`

ORACLE sqlldr 大数据量 导入

 
阅读更多

由于项目需要,需要向数据库中导入6000万条数据。现有的资源是txt文本(数据用“,”分开的)。

     方案一:转换成insert语句,但是执行效率太低,放弃。

     方案二:使用plsql工具(tool-text import),这种效率大概是50万条每小时。由于时间紧急所以也不行。

     方案三:使用sqlldr,这种效率还凑合,大概350万每小时。下面着重介绍下。

          工具:sqlloader

          前提:安装oracle服务端

          环境:6000万数据、i5cpu4g内存,oracle10g    

   步骤:

    执行过程中的数据如下:

1.         书写ctl文件(本例risk.ctl):

OPTIONS(skip_index_maintenance=TRUE,direct=true,BINDSIZE=20971520,READSIZE=20971520,ERRORS=-1,ROWS=500000)

unrecoverable

load  data 

CHARACTERSET AL32UTF8

infile   'C:\Users\LHB\Desktop\TaxmodelData\PureRiskPremiumItem.txt'

insert into table pureriskpremium

Fields terminated by ','

trailing nullcols

(MODELCODE,

 BASICRATECODE,

 AREACODE,

 BASICRISKPREMIUMS,

 BIZVERSION,

 EFFECTIVETIME,

 OBTAINCREATETIME

);

解释:

ROWS=500000 每500000提交

C:\Users\LHB\Desktop\TaxmodelData\PureRiskPremiumItem.txt' 需要处理的真实

Fields terminated by ',' 分隔符,本例分隔符是“,”

pureriskpremium 表名

2.         打开cmd

sqlldr jyrluser/jyrluser@10.9.249.5:1521/xasccxdb1 control=C:\Users\LHB\Desktop\TaxmodelData\risk.ctl

 

log=c:\jrimp.log

解释:sqlldr 用户名/密码@真实的ip:端口号/实例名 control=控制文件地址 log=日志(失败时才有日志)

3.      回车后,如果没有报错,说明正在执行。每执行一定条数会提示出来。

4.     报错信息调试:

       SQL*Loader-2026:加载因SQL加载程序无法继承而被终止
SQL*Loader-925:uldlfca:OCIStmtExecute(ptc_hp)时出错
ORA-03114:未连接到ORACLE

 

       当时执行到3000左右时,报错了,然后查询报错日志,从日志中看出,字段定义长度太短,导致报了3000万条错误,后来扩充了字段。再次执行,就好用了。

 

C:\Users\Administrator>sqlldr xinjiatao/xinjiatao@127.0.0.1:1521/ORCL control=F:\New_Data\A\test.ctl log=c:\xin.log   data=F:\New_Data\A\score_20170715.csv

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics