表示数据应由特殊字符括起来。也可以括在TERMINATED字符内。使用OPTIONALLY要同时用TERMINLATED。
ENCLOSED 指两个分界符内的数据。如果同时用 ENCLOSED和TERMINAED ,则它们的顺序决定计算的顺序。
首先创建一张表,建表语句如下:
create table sqlldr_optionally_enclosed
( NO int,
filed1 varchar2(20),
filed2 varchar2(20));
控制文件如下:
load data
infile 'sqlldr_optionally_enclosed.txt'
replace into table sqlldr_optionally_enclosed
fields terminated by ','
optionally enclosed by '"'
TRAILING NULLCOLS
(No char,
filed1 char,
filed2 char)
数据文件sqlldr_optionally_enclosed.txt的内容如下:
1,a,b
2,"a","b"
3,""a"",b
4,""a"",""b""
5,"""a""","""b"""
6,"a,b
7,""a,b
8,"""a,b
9,a",b
10,a"",b
11,a""",b
12,"a"",b
13,""a",b
14,"""a"",b
15,""a""",b
16,""a"""",b
17,""""a"",b
18,"a""",b
19,"""a",b
讲控制文件和数据文件放在同一个目录下,在cmd下面执行导入语句如下:
Sqlldr userid=system/123456 control=sqlldr_optionally_enclosed.ctl log=sqlldr_optionally_enclosed.out
这句话说明使用sqlldr导数工具,连接数据库的用户名和密码分别为system,123456,控制文件为sqlldr_optionally_enclosed.ctl,日志输出文件为sqlldr_optionally_enclosed.out。
导入结果显示如下:
去数据库中通过select * from sqlldr_optionally_enclosed查看数据结果时只有八条记录,如下:
查看输出的日志文件,得知未导入的数据错误原因为:
总结:导入数据使用SQL*LOADER中optionally enclosed时要么数据左边不能带引号;如果有引号左右都必须为奇数个,但不必相等。
来源:CSDN
作者:hu2010shuai
链接:https://blog.csdn.net/hu2010shuai/article/details/103591665