Db2加载数据时Timestamp格式错误求助:SQL0180N报错处理
解决DB2 LOAD命令中TIMESTAMP格式不匹配的SQL0180N错误
这个错误的核心原因是DB2默认的TIMESTAMP解析格式和你的数据源格式不匹配。DB2默认期望的TIMESTAMP格式是YYYY-MM-DD-HH.MM.SS.FFFFFF,而你的数据源用的是MM/DD/YYYY HH:MM(比如11/1/2012 0:00),所以LOAD工具无法正确解析这个字符串,抛出了SQL0180N。
解决方法很简单:在LOAD命令的MODIFIED BY子句中添加TIMESTAMPFORMAT参数,明确指定你的数据源时间戳格式。
修改后的完整LOAD命令
LOAD CLIENT FROM 'C:\database_extract\budget1.csv' OF DEL MODIFIED BY USEDEFAULTS TIMESTAMPFORMAT"MM/DD/YYYY HH24:MI" MESSAGES 'C:\database_extract\budget1.log' REPLACE INTO CLP.budget NONRECOVERABLE INDEXING MODE AUTOSELECT;
关键参数说明
TIMESTAMPFORMAT"MM/DD/YYYY HH24:MI":告诉DB2按照月/日/年 24小时制:分钟的规则解析数据源中的时间戳字符串。- 如果你的日期格式实际是
DD/MM/YYYY(比如11是日、1是月),只需要把格式改成"DD/MM/YYYY HH24:MI"即可。 HH24对应你数据源中的0:00(24小时制的零点);MI代表分钟,刚好匹配你的格式。
- 如果你的日期格式实际是
注意事项
如果在Windows命令行执行命令时遇到引号转义问题,可以把格式字符串的双引号用反斜杠转义,改成:
LOAD CLIENT FROM 'C:\database_extract\budget1.csv' OF DEL MODIFIED BY USEDEFAULTS TIMESTAMPFORMAT\"MM/DD/YYYY HH24:MI\" MESSAGES 'C:\database_extract\budget1.log' REPLACE INTO CLP.budget NONRECOVERABLE INDEXING MODE AUTOSELECT;
这样修改后,LOAD工具就能正确识别并转换你的时间戳数据,不会再抛出SQL0180N错误了。
内容的提问来源于stack exchange,提问作者user9419188
相关产品推荐
相关产品推荐

