java - 加载数据时忽略 DB2 导入命令中 DAT 文件中的行尾字符

标签 java file file-io import db2

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

HHHH-III|AAAA0000536101|2011/11/16|0100002MM000

正在使用 db2 import 命令将此数据加载到 DB2 表中。

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

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

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)不知何故。如果是这种情况,那么它应该很容易剥离,但您应该看看是否可以首先通过修复生成文件的代码来避免这个问题。 (这可能不在您的控制范围内,但也可能不是。)

关于java - 加载数据时忽略 DB2 导入命令中 DAT 文件中的行尾字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8148004/

相关文章:

java - Selenium Webdriver 未找到此类元素

c# - 以 Angular 发布文件

java - 将包含 XML 的字符串写入文件

c++ - 何时使用不声明类但具有函数定义的头文件

c - 如何获取字符串的特定部分?

python - 如何确保 filehandle.write() 不会因 str/bytes 转换问题而失败?

java匿名类枚举编译错误

java - 使数组中的一个位置等于一个新对象

java - 我想根据测试用例ID而不是测试用例摘要执行我的测试用例