1

我想将 Java 与uniVocity-parsers一起使用来解析 mysql 生成的 csv 数据select into outfile

现在遇到一种处理不可打印字符的情况!mysql 表包含bit(1)列,当使用select into outfile将其数据保存到文件中时,我发现bit(1)列数据变为不可打印字符。当使用uniVocity-parsers获取行数据时,我得到nullbit(1)列的值。我希望得到该bit(1)列的真实数据。我该怎么办 ?

4

1 回答 1

1

这里的问题是bit(1)MySQL 将这些值导出为字符\u0000and \u0001,默认情况下解析器会修剪所有值(意味着任何字符<= ' ')。修剪过程将消除\u0000和 ,\u0001因为它们的整数表示分别是01,而空白字符的整数表示' '32

您只需要配置该解析器以防止修剪值:

    settings.trimValues(false);

此外,您提供的文件的行以\r\n. 如果你在 OSX 或 Linux 上解析这个,你需要明确定义行尾:

    settings.getFormat().setLineSeparator("\r\n");

或启用自动检测:

    settings.setLineSeparatorDetectionEnabled(true);

希望这可以帮助

于 2016-09-05T03:58:44.913 回答