我想将Java与uniVocity-parsers一起使用,以解析mysql生成的csv数据select into outfile
。
现在,我遇到一种处理不可打印字符的情况!mysql表包含bit(1)
列,当select into outfile
用于将其数据保存到文件中时,我发现bit(1)
列数据成为不可打印的字符。当使用uniVocity解析器获取行数据时,我得到null
了bit(1)
列的值。我希望获得该bit(1)
列的真实数据。我应该怎么办 ?
这里的问题是bit(1)
MySQL将这些值导出为字符\u0000
和\u0001
,并且解析器默认情况下会修剪所有值(意味着任何字符<= ' '
)。修剪过程将擦除\u0000
和,\u0001
因为它们的整数表示分别为0
和1
,而空白字符的整数表示' '
为32
。
您只需要配置该解析器以防止修整值:
settings.trimValues(false);
另外,您提供的文件的行以终止\r\n
。如果在OSX或Linux上对此进行解析,则需要显式定义行结尾:
settings.getFormat().setLineSeparator("\r\n");
或通过以下方式启用自动检测:
settings.setLineSeparatorDetectionEnabled(true);
希望这可以帮助
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句