Java 加载数据时忽略DB2 import命令中DAT文件中的行尾字符

Java 加载数据时忽略DB2 import命令中DAT文件中的行尾字符,java,file,file-io,import,db2,Java,File,File Io,Import,Db2,我有一个包含数据的dat文件。文件中的一行如下所示: HHHH-III|AAAA0000536101|2011/11/16|0100002MM000 2011/11/16|0100002MM000|HHHH-III|AAAA|BBBBB|KDKDKDKDDKD MANAGED|C 使用DB2IMPORT命令将此数据加载到DB2表中 问题: 数据中的最后一个字段与dat文件行末尾的“新行”字符一起加载,即0100002MM000在末尾加载一些不可见字符 同一字段正在从其他文件加载到其他表中。但

我有一个包含数据的dat文件。文件中的一行如下所示:

HHHH-III|AAAA0000536101|2011/11/16|0100002MM000
2011/11/16|0100002MM000|HHHH-III|AAAA|BBBBB|KDKDKDKDDKD MANAGED|C
使用DB2IMPORT命令将此数据加载到DB2表中

问题: 数据中的最后一个字段与dat文件行末尾的“新行”字符一起加载,即0100002MM000在末尾加载一些不可见字符

同一字段正在从其他文件加载到其他表中。但在另一个dat文件中,它位于行的中心位置,如下所示:

HHHH-III|AAAA0000536101|2011/11/16|0100002MM000
2011/11/16|0100002MM000|HHHH-III|AAAA|BBBBB|KDKDKDKDDKD MANAGED|C
因此,稍后将第一个表中的0100002MM000与第二个表中的0100002MM000进行比较是失败的

如何解决这个问题


因此,在本例中,

文件是否可能有Windows“\r\n”(CRLF)行终止符,并且导入需要Unix“\n”终止符,因此它在末尾导入“\r”?如果是这样的话,修复方法就是将文件转换为Unix格式——有很多工具可以实现这一点,或者您可以很容易地通过编程实现


通过在二进制文件编辑器中打开文件并查看行终止符来检查是否存在这种情况-如果它使用0x0D 0x0A(或UTF-16等效项),则这是Windows行终止符。即使不是这样,查看二进制文件编辑器也会向您显示该行末尾的内容-可能有一个空字符(0x00)不知何故进入了该行。如果是这样的话,剥离应该很容易,但是首先应该看看是否可以通过修复生成文件的代码来避免问题。(这可能超出了您的控制范围,但可能并非如此。)

可能您的数据的结构与DB2默认结构不同。您必须通过更详细地指定来覆盖此行为。看看

此外,还有一个链接讨论了导入具有不同分隔符的DEL文件时出现的所有这些问题: