sqlldr 导入txt文档

xiaoxiao2021-02-27  144

将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
转载请注明原文地址: https://www.6miu.com/read-15932.html

最新回复(0)