sqlload的使用心得

最近公司没人,把我逼到一线,前期公司为数据导入。使用工具选择sqlload。

1.关于工具的介绍google一搜很多,我直接说我是怎么使用的,遇到什么问题。

2. 数据格式为txt或csv规则数据,比如(第一种无分隔符数据):

test.txt

|----|-----|

姓名   年龄

XX1     20

XX2     21

建控制文件

test.ctl

options(skip = 1) //跳过第一行,不用导入到数据库

load data

infile 'test.txt'  // 需要导入的数据文件

append into table test //导入到哪张表 (insert/append....)

TRAILING NULLCOLS //表的字段没有对应的值时允许为空

(

      name POSITION(1,4),//表示一行中,需要数据的开始和结束位置

      sex POSITION(6,10)

 

)

建立bat可执行文件 test.bat

sqlldr userid=username/password@orcl control=test.ctl log=test.log bad=test.bad
pause

然后执行test.bat数据就可以存到数据库中。

第二种是csv格式数据,比如用逗号分隔

那控制文件改成

 

options(skip = 1) //跳过第一行,不用导入到数据库

load data

infile 'test.txt'  // 需要导入的数据文件

append into table test //导入到哪张表 (insert/append....)

Fields terminated by "," //数据中每行记录用 "," 分隔  
 Optionally enclosed by '"' // 数据中每个字段用 '"' 框起

TRAILING NULLCOLS //表的字段没有对应的值时允许为空

(

      name NULLIF(NAME="")  "TRIM(:NAME)", // 1.if(null)的情况 2.去掉2端空格

      sex ,

     //如果有date类型 datetest DATE "YYYY-MM-DD HH24:MI:SS"

    // 还有好多种用法,我没用到

 

)


 就使用这样的方法导入了几十万,几百万的数据。很方便,很快。

 

提升速度:

 sqlldr userid=username/password@orcl control=xxx.ctl log=xx.log bad=xx.bad direct=true parallel=true

然后在控制文件中
load data 语句上边加上一句  unrecoverable 

 2者同时使用,速度提升惊人,之前5分钟,现在只需要1分钟。。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值