如何使用 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 解析器无法正确解析。

你有很多不同的选择:

  1. 从您的行处理器调用 context.stop()

  2. 在解析器设置中,可以设置settings.setNumberOfRecordsToRead(10)读取10行后停止

  3. 使用解析器本身,调用 parser.stopParsing()

希望对您有所帮助