【发布时间】:2019-03-19 13:48:56
【问题描述】:
问题是当我在 NAME 列中放置两个以上的双引号时(检查下面的代码)然后 sqlldr 失败。 在 data.txt 文件中,前 3 条记录失败,因为 NAME 列(记录中的第二个位置)有超过 2 个双引号。 请协助。我认为我需要针对 NAME 列将一些函数放入控制文件中。
您可以运行以下代码并检查,前 3 条记录将失败,最后一条记录将被插入,我想插入所有带或不带双引号的记录:
--table creation
create table employee
(
name varchar2(4000)
);
--control file
load data
infile '/tmp/swetabh/data.txt'
into table employee
truncate
fields terminated by "," OPTIONALLY ENCLOSED by '"' TRAILING NULLCOLS
(
name
)
--data.txt (SEE ALL RECORDS ARE HAVING MORE THAN 2 DOUBLE QUOTE AND WANT TO INSERT DATA TO THE TABLE WITH OR WITHOUT DOUBLE QUOTE)
""start with double quote "
"end with double quote ""
"double quote " in the middle "
-bash-4.1$ sqlldr userid=xxx/xxx@xxxx control=/tmp/swetabh/control.txt log=/tmp/swetabh/control.log bad=/tmp/swetabh/bad.txt readsize=2000000000 bindsize =2000000000
【问题讨论】:
-
这里有一些关于这个的扩展讨论:stackoverflow.com/questions/41431545/…
标签: sql oracle plsql plsqldeveloper sql-loader