gpt4 book ai didi

csv - Mysql转储字符转义和CSV读取

转载 作者:行者123 更新时间:2023-11-28 23:30:16 25 4
gpt4 key购买 nike

我试图将我的 mysql 查询的内容转储到 csv 中,并使用一些基于 java 的开源 csv 阅读器读取它。这是我面临的问题,

  1. 我的数据集有大约 50 个字段。该数据集包含几个带有换行符的文本字段。因此,为了防止破坏我的 CSV 阅读器,我给了 Fields 可选地用“\””括起来,这样换行符就会用双引号括起来。在这种情况下,对于其他字段,即使没有换行符,它也会用双引号括起来.
  2. 看起来默认情况下执行 mysql 转储时转义字符是\(反斜杠)这会导致换行符出现在末尾,这会破坏 csv 解析器。要在末尾删除这个\,如果我给字段转义为 ''(空字符串),它会导致文本中的双引号不被转义,仍然会破坏 csv 读取。

如果我可以跳过换行转义,但仍然保留转义双引号以使 csv 阅读器不中断,那就太好了。

我可以在这里遵循什么建议?

谢谢,斯里拉姆

最佳答案

尝试使用 uniVocity-parsers 将数据转储到 CSV 中.然后您可以使用相同的库读取结果:

试试这个来转储数据:

ResultSet resultSet = executeYourQuery();

// To dump the data of our ResultSet, we configure the output format:
CsvWriterSettings writerSettings = new CsvWriterSettings();
writerSettings.getFormat().setLineSeparator("\n");
writerSettings.setHeaderWritingEnabled(true); // if you want want the column names to be printed out.

// Then create a routines object:
CsvRoutines routines = new CsvRoutines(writerSettings);

// The write() method takes care of everything. Both resultSet and output are closed by the routine.
routines.write(resultSet, new File("/path/to/your.csv"), "UTF-8");

这是读取你的文件:

// creates a CSV parser
CsvParserSettings parserSettings = new CsvParserSettings();
parserSettings.getFormat().setLineSeparator("\n");
parserSettings.setHeaderExtractionEnabled(true); //extract headers from file
CsvParser parser = new CsvParser(parserSettings);

// call beginParsing to read records one by one, iterator-style. Note that there are many ways to read your file, check the documentation.
parser.beginParsing(new File("/path/to/your.csv"), "UTF-8);

String[] row;
while ((row = parser.parseNext()) != null) {
System.out.println(Arrays.toString(row));
}

希望这对您有所帮助。

免责声明:我是这个库的作者,它是开源和免费的(Apache V2.0 许可)

关于csv - Mysql转储字符转义和CSV读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37556698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com