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):
Bearbeiten: Dies ist die Methode, bei der ich die InputStreamReader
:
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).
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
Dann können Sie es verarbeiten. Vergessen Sie nicht, das Token vor der Verwendung zu schneiden.
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%Tags und Links java csv large-files tsv opencsv