我正在使用SQL*Loader脚本将CSV文件中的值输入到Oracle表中。在此表中,有一些字段具有NOT NULL
约束条件。在我的CSV文件中,对应的字段为""
,当发生这种情况时,我希望将一个空字符串输入到Oracle表中。
这是我的控制文件:
LOAD DATA
infile 'F:\tar.csv'
REPLACE
INTO TABLE tar
fields terminated by ',' optionally enclosed by '"'
TRAILING NULLCOLS
(IDTAR ,
DATABACKUP DATE "YYYY-MM-DD",
PAESE ,
R_ELEM NULLIF (R_ELEM=BLANKS))
这是日志文件中的错误:
ORA-01400:无法将NULL插入(“MY_SCHEMA”.“TAR”.“帕塞”)
如何通过提供不同的值来避免错误?
1条答案
按热度按时间zte4gxcn1#
您可以应用SQL运算符,如
NVL(:PAESE, 'XXX')
。请注意字段名引用前面的冒号。在原处:使用虚拟表:
创建tar表(idtar编号、数据备份日期、帕塞varchar 2(10)非空、r_elem varchar 2(10));
和CSV,其中第3行和第4行的尾随空格用于
nullif()
子句:则使用该控制文件运行将获得:
日志上写着:
查询该表显示所有四行都已加载:
很明显,用你想使用的实际默认字符串替换
'XXX'
。你说的是'一个空字符串',所以你可以用"NVL(:PAESE, ' ')"
插入一个空格字符。但是你不能用一个 empty 字符串,因为就Oracle而言,这和null是一样的。