Konvertieren von großen CSV-Dateien zu JSON
Ich bin nicht dagegen, wenn dies erledigt ist mit einem separaten Programm, mit Excel, in NodeJS oder in eine web-app.
Es ist genau das gleiche problem wie hier beschrieben:
Große CSV nach JSON/Objekt in Node.js
Es scheint, dass die OP nicht bekommen, die Antwort zu arbeiten (aber akzeptiert es trotzdem?). Ich habe versucht, mit ihm arbeitet, aber kann nicht scheinen, um es zu arbeiten entweder.
Kurz: ich arbeite mit ~50,000 Zeile CSV, und ich will es konvertieren zu JSON. Ich habe versucht, nur um jedes online "csv nach json" webapp gibt, alle crash-mit diesem großen des Datensatzes.
Habe ich versucht, viele Node
CSV nach JSON-Module, aber, wieder, Sie, die alle Abstürzen. Die csvtojson
Modul schien vielversprechend, aber ich habe diesen Fehler: FATAL ERROR: JS Allocation failed - process out of memory
.
Was auf der Erde kann ich tun, um diese Daten in ein nutzbares format? Wie oben, ich habe nichts dagegen, wenn es eine Anwendung, dass etwas funktioniert in Excel, eine webapp oder ein Node-Modul, so lange, wie ich entweder eine .JSON
Datei oder ein Objekt, das kann ich mit der in-Knoten.
Irgendwelche Ideen?
- versuchen Sie, es zu schreiben, indem Sie Ihre eigenen und speichern Sie es in einer db oder auf die Festplatte jedes jetzt und dann
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du erwähnt csvtojson Modul oben und ist ein open-source-Projekt, das ich bin Pflege.
Ich bin traurig, dass es nicht für Sie arbeiten, und es wurde verursacht durch einen Fehler behoben, die vor mehreren Monaten.
Ich habe auch einige zusätzlichen Zeilen in der README-Datei für Ihr Szenario. Bitte schauen Sie sich Prozess Große CSV-Datei in die Befehlszeile ein.
Bitte stellen Sie sicher, dass Sie die neueste csvtojson release. (Derzeit ist es 0.2.2)
Können Sie aktualisieren, indem Sie
Nachdem Sie installiert ist die Letzte csvtojson, die Sie gerade brauchen, um ausführen:
Diese streams Daten aus der csvfile. Oder wenn Sie streamen möchten Daten aus einer anderen Anwendung:
Werden Sie die Ausgabe der gleichen Sache.
Habe ich manuell getestet, es mit einer csv-Datei mit über 3 Millionen Einträge und es funktioniert ohne ein Problem.
Ich glaube, Sie brauchen nur ein einfaches Werkzeug. Der Zweck der lib wird zur Linderung von stress wie dieses. Bitte lassen Sie mich wissen, wenn Sie irgendwelche Probleme treffen, das nächste mal, so konnte ich es lösen in der Zeit.
csvtojson --delimiter=## x.csv > y.json
Des npm csv Paket ist in der Lage, die Verarbeitung einer CSV-stream, ohne zu speichern Sie die komplette Datei im Speicher. Sie müssen installieren node.js und csv (
npm install csv
). Hier ist eine Beispiel-Anwendung, die schreiben von JSON-Objekten in einer Datei:Bitte beachten Sie die
columns
Optionen, benötigt, um die Spalten-Namen in der JSON-Objekte (sonst bekommst du ein einfaches array) und dieend
Optionenfalse
, die erzählt Knoten nicht, schließen Sie die Datei-stream, wenn die CSV-stream wird geschlossen: diese ermöglicht es uns, fügen Sie die letzten ']'. Dietransform
callback bietet die Möglichkeit, Ihr Programm zu Haken in den Datenstrom und wandelt die Daten vor dem schreiben auf den nächsten stream.out.text
erstellt wird, ist nicht richtig JSON formatiert, sondern es ist nur eine Datei mit Zeilen der Objekte (es muss eine[
am start und]
am Ende, sowie Kommas am Ende jeder Zeile). Wenn Sie Bearbeiten, um dies zu korrigieren, ich werde es akzeptieren, wie die Antwort.Beim arbeiten mit solch großen Datensatz, den Sie schreiben müssen, strömten die Verarbeitung eher als Last, > umwandeln > speichern. Laden von solch großen Sache - nicht passen würde der Speicher.
CSV-Datei selbst ist sehr einfach und hat wenig Differenzen über Formate. So schreiben Sie einfachen parser selbst. Wie gut JSON ist in der Regel einfach, wie gut und kann leicht verarbeitet, line by line, ohne zu laden ganze.
on('data', ...)
Prozess Daten Lesen: append general-string, und extrahieren Sie komplette Linien, falls verfügbar.Dies ist gut machbar mit
pipe
und das eigene Rohr in der Mitte, das wird konvertieren von Linien in Objekten geschrieben werden in die neue Datei.Dieser Ansatz ermöglicht es, zu vermeiden, laden Sie die gesamte Datei in den Speicher, aber der Prozess es sich allmählich mit dem Teil laden, verarbeiten und schreiben Sie es und gehen Sie langsam vor.
Können Sie versuchen, verwenden Sie OpenRefine (oder Google Refine).
Importieren Sie Ihre CSV-Datei. Dann können Sie Sie exportieren. Bearbeiten Vorlage für ein JSON-format.
http://multimedia.journalism.berkeley.edu/tutorials/google-refine-export-json/
Dieser sollte den job tun.
konvertiert alle
csv
Dateien in einem Ordner zujson
- Datei, keine\n\r