Guter und effektiver CSV / TSV Reader für Java

8

Ich versuche, große CSV und TSV (Tab getrennt) Dateien mit ca. 1000000 Zeilen oder mehr zu lesen. Jetzt habe ich versucht, ein TSV mit ~2500000 Zeilen mit opencsv zu lesen, aber es wirft mir ein java.lang.NullPointerException . Es funktioniert mit kleineren TSV Dateien mit ~250000 Zeilen. Also habe ich mich gefragt, ob es noch andere Libraries gibt, die das Lesen von riesigen CSV und TSV Dateien unterstützen. Hast du irgendwelche Ideen?

Jeder, der sich für meinen Code interessiert (ich kürze ihn, also ist Try-Catch offensichtlich ungültig):

%Vor%

Bearbeiten: Dies ist die Methode, bei der ich die InputStreamReader :

konstruiere %Vor%     
Robin 14.12.2012, 13:52
quelle

4 Antworten

5

Ich habe es nicht versucht, aber ich hatte früher superCSV untersucht.

Ссылка

Ссылка

Prüfen Sie, ob das für Sie funktioniert, 2,5 Millionen Zeilen.

    
RuntimeException 14.12.2012, 13:56
quelle
9

Verwenden Sie keinen CSV-Parser, um TSV-Eingaben zu analysieren. Es wird unterbrochen, wenn der TSV beispielsweise Felder mit einem Anführungszeichen hat.

uniVocity-Parser enthält einen TSV-Parser. Sie können eine Milliarde Zeilen ohne Probleme analysieren.

Beispiel zum Analysieren einer TSV-Eingabe:

%Vor%

Wenn Ihre Eingabe so groß ist, dass sie nicht gespeichert werden kann, tun Sie Folgendes:

%Vor%

Offenlegung: Ich bin der Autor dieser Bibliothek. Es ist Open-Source und kostenlos (Apache V2.0 Lizenz).

    
Jeronimo Backes 23.11.2014 08:38
quelle
1

Versuchen Sie, die Bibliotheken wie von Satish vorgeschlagen zu wechseln. Wenn das nicht hilft, müssen Sie die gesamte Datei in Token aufteilen und sie verarbeiten.

Denken Sie daran, dass Ihr CSV keine Escape-Zeichen für Kommas hatte

%Vor%

Dann können Sie es verarbeiten. Vergessen Sie nicht, das Token vor der Verwendung zu schneiden.

    
Sri Harsha Chilakapati 14.12.2012 13:59
quelle
1

Ich weiß nicht, ob diese Frage noch aktiv ist, aber hier ist die, die ich erfolgreich verwende. Möglicherweise müssen Sie jedoch weitere Schnittstellen wie Stream oder Iterable implementieren:

%Vor%     
Konrad Höffner 02.04.2014 12:44
quelle

Tags und Links