db2导入日期为空的csv

db2导入日期为空的csv,db2,Db2,我负责这个 db2 "IMPORT FROM C:\my.csv OF DEL MODIFIED BY COLDEL, LOBSINFILE DATEFORMAT=\"D/MM/YYYY\" SKIPCOUNT 1 REPLACE INTO scratch.table_name" 然而,我的一些行有一个空的日期字段,所以我得到这个错误 以“”开头的SQL3191N与用户指定的日期格式、时间格式或时间格式不匹配。该行将被拒绝 我的CSV文件如下所示 "XX","25/10/1985" "YY"

我负责这个

 db2 "IMPORT FROM C:\my.csv OF DEL MODIFIED BY COLDEL, LOBSINFILE DATEFORMAT=\"D/MM/YYYY\" SKIPCOUNT 1 REPLACE INTO scratch.table_name"
然而,我的一些行有一个空的日期字段,所以我得到这个错误

以“”开头的SQL3191N与用户指定的日期格式、时间格式或时间格式不匹配。该行将被拒绝

我的CSV文件如下所示

"XX","25/10/1985"
"YY",""
"ZZ","25/10/1985"
我意识到如果我插入字符而不是空白字符串,我可以使用NULL指示符paramater。
但是,我无权更改CSV文件。有没有办法忽略将空白字符串作为null导入?

我什么都不知道。是的,理想情况下,日期字段应为空


最好的办法可能是将数据加载到一个不是日期列的scratch/temp表中——只需将其作为字符数据(看起来您已经在使用scratch表了)。在对实际表执行
INSERT
操作时,如果值为空,则使用
CASE
语句将信息转换为空日期应该很简单。

这是输入文件中的错误。DB2区分空字符串和零长度字符串。如果需要空日期,空日期将完全没有引号,如:

"AA",
如果无法更改输入文件的格式,则有2个选项:

  • 将数据插入临时表(将日期列更改为字符),然后使用SQL填充最终目标表

  • 编写一个程序来解析(“修复”)输入文件,然后导入生成的修复数据。通常不必将整个文件写到磁盘上就可以做到这一点——您的程序可以写入命名管道,DB2导入(和加载)实用程序能够从命名管道中读取