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导入(和加载)实用程序能够从命名管道中读取