我们有多种方法能够向Oracle数据库里导入文本文件,但假设导入的文本文件过大,比如5G,10G的文本文件,有些方法就不尽如意了。比如PLSQL Developer中的导入文本功能,假设文本文件过大。不仅导入速度太慢,中间还easy出错。这时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 //username/password@实例名 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"
总结:要么左边不能带引號;假设有引號左右都必须为奇数个