我想将 Java 与uniVocity-parsers一起使用来解析 mysql 生成的 csv 数据select into outfile
。
现在遇到一种处理不可打印字符的情况!mysql 表包含bit(1)
列,当使用select into outfile
将其数据保存到文件中时,我发现bit(1)
列数据变为不可打印字符。当使用uniVocity-parsers获取行数据时,我得到null
了bit(1)
列的值。我希望得到该bit(1)
列的真实数据。我该怎么办 ?
我想将 Java 与uniVocity-parsers一起使用来解析 mysql 生成的 csv 数据select into outfile
。
现在遇到一种处理不可打印字符的情况!mysql 表包含bit(1)
列,当使用select into outfile
将其数据保存到文件中时,我发现bit(1)
列数据变为不可打印字符。当使用uniVocity-parsers获取行数据时,我得到null
了bit(1)
列的值。我希望得到该bit(1)
列的真实数据。我该怎么办 ?
这里的问题是bit(1)
MySQL 将这些值导出为字符\u0000
and \u0001
,默认情况下解析器会修剪所有值(意味着任何字符<= ' '
)。修剪过程将消除\u0000
和 ,\u0001
因为它们的整数表示分别是0
和1
,而空白字符的整数表示' '
是32
。
您只需要配置该解析器以防止修剪值:
settings.trimValues(false);
此外,您提供的文件的行以\r\n
. 如果你在 OSX 或 Linux 上解析这个,你需要明确定义行尾:
settings.getFormat().setLineSeparator("\r\n");
或启用自动检测:
settings.setLineSeparatorDetectionEnabled(true);
希望这可以帮助