2016-02-22 3 views
1

У меня есть набор данных из 26 миллионов строк, и когда я пытаюсь разобрать его с помощью синтаксического анализа uniVocity, он читает его как только 18 миллионов строк. Число полей моих строк варьируется от 158 до 162 с разделителем как ASCII '\ u0001'.Анализатор UniVocity CSV имеет разную длину?

туалет -l выход из Linux >>>> туалет -l withHeader.dat 26351323 withHeader.dat

Но анализатор читает как Общее количество строк в файле = 18554088 (выход из списка .размер parser.parseAll())

Может кто-нибудь объяснить, что может быть проблемой?

это мой parserSettings

settings.getFormat().setLineSeparator("\n"); 
    settings.selectFields("acctId","tcat", "transCode"); 
    settings.getFormat().setDelimiter('\u0001'); 
    //settings.setAutoConfigurationEnabled(true); 
    //settings.setMaxColumns(86); 
    settings.setHeaderExtractionEnabled(false); 

    // creates a CSV parser 
    CsvParser parser = new CsvParser(settings); 
    // parses all rows in one go. 
    List<String[]> allRows = parser.parseAll(newReader(filePath)); 
    System.out.println("Total # of rows in file = " + allRows.size()); 
+0

@ jeronimo-backes - Можете ли вы проверить и прокомментировать – Gokul

ответ

1

Если значения могут содержать разделители строк, того количество проанализированных записей не будет равно число строк.

Если это не так, то, скорее всего, вы не правильно настроите формат. Вам может понадобиться настроить кавычки, цитирую побеги и т.д.

Мое первое предложение, чтобы попытаться автоматически определять формат с:

settings.detectFormatAutomatically(); 

После разборе, проверьте, если у вас есть счетчика строк вы ожидаете найти. Вы можете получить то, что было обнаружено по телефону:

CsvFormat detectedFormat = parser.getDetectedFormat(); 

Имейте в виду, этот процесс не гарантируется, но в большинстве случаев это делает трюк. Эти функции доступны с версии 2.0.0.

Если ничего не помогает, пожалуйста, приложите (часть) к вашему входному файлу, чтобы я мог посмотреть и обновить свой ответ.

Смежные вопросы