sqlldr导入日期类型的null值及去掉单引号与双引号问题

利用sqlldr导入记录时,遇到数据中未null,无法导入的问题

1、数据表结构如下图:

sqlldr导入日期类型的null值及去掉单引号与双引号问题_第1张图片

2、使用的sqlldr语句如下:

load data
infile 'E:\dwTest\c_container_dev_utf8.txt'
append into table C_CONTAINER_DEV
fields terminated by ',' 
OPTIONALLY ENCLOSED BY '"' --TRAILING NULLCOLS
(
RECORD_ID ,
CONTAINER_TYPE_CODE ,
CONTAINER_ID ,
MP_ID ,
EQUIP_CATEG ,
EQUIP_ID ,
INST_LOC OPTIONALLY ENCLOSED BY '"' ,   --源文件有双引号,这里去掉
INST_DATE,
ORG_NO ,
IN_ROW ,
IN_COLUMN ,
BOX_COL ,
BOX_ROW 
)




3、导入时出现问题:

4、想了很多办法都没有实现插入null,无奈之下,对该列不做chul,并修改ctl文件为(变化之处在第14行):

load data
infile 'E:\dwTest\c_container_dev_utf8.txt'
append into table C_CONTAINER_DEV
fields terminated by ',' 
OPTIONALLY ENCLOSED BY '"' --TRAILING NULLCOLS
(
RECORD_ID ,
CONTAINER_TYPE_CODE ,
CONTAINER_ID ,
MP_ID ,
EQUIP_CATEG ,
EQUIP_ID ,
INST_LOC OPTIONALLY ENCLOSED BY '"' ,   --源文件有双引号,这里去掉
INST_DATE FILLER, --- 下面的 "Something Not To Be Loaded" 将不会被装载 (--INST_DATE "to_date(:INST_DATE,'yyyy-mm-dd hh24:mi:ss')",)
ORG_NO ,
IN_ROW ,
IN_COLUMN ,
BOX_COL ,
BOX_ROW 
)

然后再次执行sqllder语句:sqlldr test/[email protected]:1521/orcl control=E:\\dwTest\\loader.ctl log=E:\\dwTest\\loader.log,成功了,然后在导入的数据库中修改下,这个很简单了

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1、问题说明
   sqlldr导入数据时,速度非常快,用过的人都知道;但今天在导入数据时,发现导入的数据含有单引号,并不是我需要的,正确的数据应该不含有单引号
2、网上有解释,不知是我找的方式不正确,还是运气不佳,找到的都是双引号的问题,也确实可以解决, OPTIONALLY ENCLOSED BY '"'
   但单引号没有找到对应的解决方案,我自己修改了下,但始终都没有成功
3、最后通过多次尝试,重要搞定,原来是应该OPTIONALLY ENCLOSED BY "'"
4、比较了下,解决双引号是用 单引号中一个双引号  解决单引号是用 双引号中一个单引号 



你可能感兴趣的:(sqlldr导入日期类型的null值及去掉单引号与双引号问题)