有一个文件,名称是export.txt,该文件前面几行如下所示:
000000000800,SEP000000000800,800
000000000810,SEP000000000810,810
000000000813,000000000813,813
000000000820,SEP000000000820,820
...
其中第一列和第二列是VARCHAR2,第三列是INTEGER
我在scott下建立了一个表是phone,三个字段的名称分别是MAC, DESCRIPTIONS, EXTENTION
前两个字段类型为VARCHAR2(20), 第三个字段类型为INTEGER
我现在希望将txt文件导入到scott.phone表里
任意文本编辑器创建.ctl文件,内容如下:
LOAD DATA
INFILE export.txt
INTO TABLE phone
FIELDS TERMINATED BY "," TRAILING NULLCOLS
(MAC,DESCRIPTIONS,EXTENTION)
其中,
第一行LOAD DATA意思是告诉SQL*Loader,要干啥? 这里是加载数据。
第二行INFILE *意思是数据从哪里来? 这里是包含在控制文件中。
第三行INTO TABLE 意思是数据要导到哪里? 这里是要到 phone表。
第四行FIELDS TERMINATED BY意思是数据之间用什么符号分隔? 这里是用 逗号 分隔。
第五行是数据要按什么顺序写到列里面
SQLLDR username/password@tns_name CONTROL=c:\temp\discount.ctl LOG=c:\temp\discount.log DATA=c:\temp\discount.txt BAD=c:\temp\discount.bad ERRORS=100000
如果没有使用 trailing nullcols,则当导入的数据中有字段为空值的情况下,会报如下错误:
export.log的内容如下所示,193条记录中有11条没有导入。
其他请参考:
http://blog.itpub.net/13165828/viewspace-609548/
http://zhidao.baidu.com/link?url=45QMv5HPXPbm6ko8v0pAh9rrhkDtlRNJbytdVefULiMjeWGt5OeV5W86P3Gt2tqArodQycw2TpicEBjpSPCjZxlgu3BCFcYFqC7zQhTrXYC