您的位置:首页 > 数据库 > Oracle

使用sqlldr向Oracle导入大的文本(txt)文件

2014-06-27 12:12 288 查看
我们有多种方法可以向Oracle数据库里导入文本文件,但如果导入的文本文件过大,例如5G,10G的文本文件,有些方法就不尽如意了,例如PLSQL Developer中的导入文本功能,如果文本文件过大,不仅导入速度太慢,中间还容易出错。这时Sqlldr就能大显身手了,Sqlldr可以每秒向Oracle插入5W条数据,可以自定义控制文件,进行导入控制,而且导入过程不易出错,下面简易记录导入过程。

1.Sqlldr导入控制文件说明

1 load data
2 infile '/home/oracle/42.txt'                    //文本文件的绝对位置
3 append into table doupoidx              //要导入的表名称
4 fields terminated by ','             //分隔符定义,这里是逗号
5 OPTIONALLY ENCLOSED BY '"'          //过滤"号
6 TRAILING NULLCOLS               //对应字段的顺序。
7 (
8 time TimeStamp 'yyyy-mm-dd hh24:mi:ss',
9 price,
10 volume,
11 interest
12 )


2.在Oracle用户下执行导入命令

sqlldr  userid=scott/oracle@orcl control =/home/oracle/input.ctl
//用户名/密码@实例名 control=控制文件的位置


关于 optionally enclosed by 的小测试

左边没引号右边有引号:成功,原样导入

111"

222""

333"""

左边有引号右边没引号:失败, second enclosure string not present

"44

""555

"""666

左右有相等的奇数个引号,成功,引号数=2n+1时导入数据带有n个引号

"777"

"""888"""

左右有相等的偶数个引号,失败, no terminator found after TERMINATED and ENCLOSED field

""999""

""""AAA""""

一边奇数一边偶数:失败, 错误信息为上述两种

"BBB""

""CCC"

"""DDD""

""EEE"""

两边不等的偶数:失败, no terminator found after TERMINATED and ENCLOSED field

""FFF""""

""""GGG""

两边不等的奇数:成功,引号数=2n+1时导入数据带有n个引号

"HHH"""

"""III"

总结:要么左边不能带引号;如果有引号左右都必须为奇数个
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: