db2导入日期为空的csv

  • 本文关键字: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与用户指定的DATEFORMAT、TIMEFORMAT或TIMESTAMPFORMAT不匹配。该行将被拒绝。

我的CSV文件看起来像这个

"XX","25/10/1985"
"YY",""
"ZZ","25/10/1985"

我意识到,如果我插入字符而不是空白字符串,我可以使用NULL INDICATORS参数。但是,我无权更改CSV文件。有没有一种方法可以忽略将空字符串作为null导入?

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

"AA",

如果你不能更改输入文件的格式,你有两个选项:

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

  • 编写一个程序来解析("修复")输入文件,然后导入生成的固定数据。您通常可以做到这一点,而不必将整个文件写入磁盘——您的程序可以写入到命名管道中,并且DB2IMPORT(和LOAD)实用程序能够从命名管道中读取。

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

最好的方法可能是将数据加载到临时表中,其中不是日期列-只需将其保留为字符数据即可(无论如何,看起来您已经在使用临时表)。在对实际表执行INSERT操作时,如果值为空,那么使用CASE语句将信息转换为空日期应该是微不足道的。

最新更新