Как прочитать первые несколько строк из CSV с помощью синтаксического анализатора однозначности

Как остановить синтаксический анализ после чтения нескольких строк из 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 не смог правильно разобрать.


person Gowrav    schedule 12.12.2017    source источник


Ответы (1)


У вас есть много разных вариантов:

  1. В процессоре строк просто вызовите context.stop().

  2. В настройках парсера вы можете установить settings.setNumberOfRecordsToRead(10) для чтения 10 строк и остановки.

  3. С самим парсером вызовите parser.stopParsing()

Надеюсь это поможет

person Jeronimo Backes    schedule 13.12.2017
comment
Спасибо за ответ. Обновлен вопрос с ответом на основе вашего решения № 2 (обновление № 1). Не работает. Я что-то упускаю? - person Gowrav; 13.12.2017
comment
Он должен работать нормально. Во всех тестах, которые я запускал, rows, возвращаемый синтаксическим анализатором, имел не более количества записей, установленных в конфигурации. Вы используете последнюю версию? - person Jeronimo Backes; 14.12.2017
comment
Да, используя 2.5.9 - person Gowrav; 14.12.2017
comment
Очень странно. Можете ли вы представить образец входных данных, которые вы пытаетесь проанализировать, чтобы я мог попытаться воспроизвести это? - person Jeronimo Backes; 14.12.2017
comment
Я создал пример проекта и протестировал его функциональность. Оно работает. Выясните причину проблемы и обновите вопрос (обновление № 2). Спасибо за ваше время. - person Gowrav; 14.12.2017
comment
Есть одна проблема. Даже после использования setEmptyValue("") для отсутствующих значений в ячейке возвращается null. Пример кода. Последние ячейки строки 8 и 9. - person Gowrav; 14.12.2017
comment
Я полагаю, вы ищете setNullValue(""). - person Jeronimo Backes; 15.12.2017