如何使用 univocity 解析器从 CSV 中读取前几行
How to read first few rows from CSV using univocity parser
如何在单向解析器中使用 iterator/row 处理器从 CSV 文件中读取几行后停止解析?
更新#1
我尝试了下面的代码,但我得到的是空行。
val parserSettings = new CsvParserSettings
parserSettings.detectFormatAutomatically()
parserSettings.setEmptyValue("")
parserSettings.setNumberOfRecordsToRead(numberOfRecordsToRead)
val parser = new CsvParser(parserSettings)
val input = new FileInputStream(path)
val rows = parser.parseAll(input)
更新#2
在将输入流传递给解析器之前,我使用 Apache Tika 检测文件的 MIME 类型以检测文件是否为 CSV。
new Tika().detect(input)
这是在改变输入流。由于 Univocity 解析器无法正确解析。
你有很多不同的选择:
从您的行处理器调用 context.stop()
。
在解析器设置中,可以设置settings.setNumberOfRecordsToRead(10)
读取10行后停止
使用解析器本身,调用 parser.stopParsing()
希望对您有所帮助
如何在单向解析器中使用 iterator/row 处理器从 CSV 文件中读取几行后停止解析?
更新#1
我尝试了下面的代码,但我得到的是空行。
val parserSettings = new CsvParserSettings
parserSettings.detectFormatAutomatically()
parserSettings.setEmptyValue("")
parserSettings.setNumberOfRecordsToRead(numberOfRecordsToRead)
val parser = new CsvParser(parserSettings)
val input = new FileInputStream(path)
val rows = parser.parseAll(input)
更新#2
在将输入流传递给解析器之前,我使用 Apache Tika 检测文件的 MIME 类型以检测文件是否为 CSV。
new Tika().detect(input)
这是在改变输入流。由于 Univocity 解析器无法正确解析。
你有很多不同的选择:
从您的行处理器调用
context.stop()
。在解析器设置中,可以设置
settings.setNumberOfRecordsToRead(10)
读取10行后停止使用解析器本身,调用
parser.stopParsing()
希望对您有所帮助