sqlldr:我可以使用逗号分隔符字段终止和可选的同时封闭吗?

时间:2015-12-10 10:26:56

标签: oracle sql-loader

我有一个CSV文件,其中包含世界着名歌手的列表。我想使用SQLLDR将此文件导入Oracle DB。

包含 singers.csv 的是:

number,name,follower
1,Prince,100
2,Ludacris,100
3,Bruno Mars,100
4,Madonna,100
5,Miley,Cyrus,100
6,Britney,Spears,100

control.ctl

OPTIONS (SKIP=0, errors=12000) 
LOAD DATA  
APPEND INTO TABLE singers_tb 
FIELDS TERMINATED BY "," 
optionally enclosed by '"' 
TRAILING NULLCOLS
(number ":number", name "TRIM (:name)",follower ":follower")

singers_tb

create singers_tb (
number varchar2(3),
name varchar2(255),
follower number
)

错误消息

Record 5: Rejected - Error on table singers_tb, column FOLLOWER.
ORA-01722: invalid number
Record 6: Rejected - Error on table singers_tb, column FOLLOWER.
ORA-01722: invalid number

我知道错误的原因是Britney,SpearsMiley,Cyrus上的逗号(,)。

如果我仍想使用FIELDS TERMINATED BY ","

,如何解决这些问题

非常感谢您的建议。

1 个答案:

答案 0 :(得分:0)

您的控制文件已有:optionally enclosed by '"'。 确保数据提供程序确实提供包含分隔符的任何字段到达时都用双引号括起来。