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