sqlldr 导入txt文档

将txt文档导入Oracle数据库的方法有多种,可以通过PL/SQL developer里的text importer工具,但是如果txt文档中的数据量较大,使用text importer会非常慢,感觉像卡住一样;也可以select for update,直接复制黏贴,但同样数据量大会很卡。

今天尝试使用sqlldr工具进行导入,文本内容大概如下:

2017-05-31  11:46           553200 img_1700x2200_00409074.tif
2017-05-31  11:46           220044 img_1700x2200_00409075.tif
2017-05-31  11:46           374104 img_1700x2200_00409076.tif
2017-05-31  11:46           528762 img_1700x2200_00409077.tif
2017-05-31  11:46           372416 img_1700x2200_00409121.tif
2017-05-31  11:46           150092 img_1700x2200_00409122.tif
2017-05-31  11:46           247410 img_1700x2200_00409123.tif
2017-05-31  11:46           420134 img_1700x2200_00409124.tif
2017-05-31  11:46           577906 img_1700x2200_00409125.tif
2017-05-31  11:46           479568 img_1700x2200_00409159.tif

共4列,以空格分隔,但是空格数量不固定。

1、创建表

create table T1
(
  RQ     VARCHAR2(20),
  SJ     VARCHAR2(20),
  FJSIZE VARCHAR2(20),
  FJURL  VARCHAR2(200)  
);

2、创建ctl文件

load data
infile 'F:\PC\img_1700.txt'
append
into table t1
fields terminated by whitespace
trailing nullcols
(rq,sj,fjsize,fjurl)
infile 'F:\PC\img_1700.txt':即将导入的txt文件及路径
into table t1:第一步创建的表
fields terminated by whitespace:以空格分隔,不计空格数量
fields terminated by ‘ ’:固定以一个空格分隔
trailing nullcols:代表字段没有值时,允许为空
************* 以下是4种装入表的方式 
APPEND // 原先的表有数据 就加在后面 
INSERT // 装载空表 如果原先的表有数据 sqlloader会停止 默认值 
REPLACE // 原先的表有数据 原先的数据会全部删除 
TRUNCATE // 指定的内容和replace的相同 会用truncate语句删除现存数据
*************

3、导入数据

sqlldr test/test@local11g control=F:\PC\import.ctl log=F:\PC\import.log rows=10000

import.ctl为第二步创建的控制文件
导入100万行数据大概用了1~2分钟左右

sqlldr加速:
1、Direct导入可以跳过数据库的相关逻辑(DIRECT=TRUE),而直接将数据导入到数据文件中,可以提高导入数据的性能。当然,在很多情况下,不能使用此参数(如果主键重复的话会使索引的状态变成UNUSABLE!;或者导入时含有序列)。
2、添加参数
readsize=20971520 bindsize=20971520

sqlldr test/test@local11g control=F:\PC\import.ctl log=F:\PC\import.log rows=10000 readsize=20971520 bindsize=20971520
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值