Oracle 的SQL*LOADER中optionally enclosed的作用

柔情痞子 提交于 2019-12-18 10:44:42

表示数据应由特殊字符括起来。也可以括在TERMINATED字符内。使用OPTIONALLY要同时用TERMINLATED

ENCLOSED 指两个分界符内的数据。如果同时用 ENCLOSEDTERMINAED ,则它们的顺序决定计算的顺序。

 

首先创建一张表,建表语句如下:

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

 

导入结果显示如下:

测试Oracle <wbr>的SQL*LOADER中optionally <wbr>enclosed的作用
 

去数据库中通过select * from sqlldr_optionally_enclosed查看数据结果时只有八条记录,如下:

测试Oracle <wbr>的SQL*LOADER中optionally <wbr>enclosed的作用
 

查看输出的日志文件,得知未导入的数据错误原因为:

测试Oracle <wbr>的SQL*LOADER中optionally <wbr>enclosed的作用 

 

总结:导入数据使用SQL*LOADERoptionally enclosed要么数据左边不能带引号;如果有引号左右都必须为奇数个,但不必相等。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!