Wie Sie eine csv-Datei zeilenweise und ersetzen/Bearbeiten bestimmter Linien, wie Sie gehen?
Ich habe eine 60GB csv-Datei die ich brauche, um einige änderungen an. Der Kunde möchte einige änderungen an den Dateien Daten, aber ich will nicht regeneriert werden die Daten in der Datei, da dauerte es 4 Tage zu tun.
Wie kann ich die Datei Lesen, Zeile für Zeile (nicht laden es werden alle in den Speicher!), und Bearbeiten Sie diese Linien als ich gehe, ersetzen bestimmter Werte etc.?
in diesem Fall, warum nicht Sie versuchen, mithilfe von Hadoop-Karte reduzieren....
Sie werden in der Lage zu tun, hier nur änderungen vor, wenn die modifizierte-Zeile wird noch Länge nicht überschreitet original-line Länge
Warum nicht einfach schreiben, um eine neue Datei? Also: 1. Lesen Sie 2. Ändern Sie 3.Schreiben Sie zu kopieren. Ist das etwas, das Sie nicht wollen, zu tun, oder sind Sie nur auf der Suche nach einer "eleganten" Weg, dies zu tun?
naja...Platz ist eine überlegung...das würde 120 GB von meiner Festplatte...
was? Dies ist nur eine einmalige csv-Datei, ich brauche es nicht in eine hadoop-Instanz!
Sie werden in der Lage zu tun, hier nur änderungen vor, wenn die modifizierte-Zeile wird noch Länge nicht überschreitet original-line Länge
Warum nicht einfach schreiben, um eine neue Datei? Also: 1. Lesen Sie 2. Ändern Sie 3.Schreiben Sie zu kopieren. Ist das etwas, das Sie nicht wollen, zu tun, oder sind Sie nur auf der Suche nach einer "eleganten" Weg, dies zu tun?
naja...Platz ist eine überlegung...das würde 120 GB von meiner Festplatte...
was? Dies ist nur eine einmalige csv-Datei, ich brauche es nicht in eine hadoop-Instanz!
InformationsquelleAutor richard | 2012-12-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wäre der Prozess so etwas wie dieses:
StreamWriter
in eine temporäre Datei.StreamReader
zu der Ziel-Datei.Hinweis zu den Schritten 2 und 3.1: Wenn Sie sicher sind, dass in der Struktur der Datei und es ist genug einfach, Sie können all das tun, out of the box, wie beschrieben (ich werde auch eine Probe in ein moment). Es gibt jedoch Faktoren, die in einer CSV-Datei, die besonderer Aufmerksamkeit Bedarf (wie Sie erkennen, wenn ein Trennzeichen verwendet wird buchstäblich in eine Spalte Wert). Sie können drudge durch diese selbst, oder versuchen Sie eine vorhandene Lösung.
Basic-Beispiel nur mit
StreamReader
undStreamWriter
:Ich aktualisiert, es handle literal vorkommen des Trennzeichens.
Eine Sache, die ich nicht glaube, von der Größe. Die endgültige
File.Move
wird wahrscheinlich sehr langsam. Anstatt also, Sie möglicherweise erstellen Sie einfach die temp-Datei im gleichen Ordner wie die Quell-Datei, dann löschen Sie die Quelle und einfach benennen Sie die temp (eher alsGetTempFileName
undFile.Move
).Dies ist, was ich am Ende tun. Es war schnell und Super. Danke!
InformationsquelleAutor HackedByChinese
memory-mapped-Dateien ist ein neues feature in .NET Framework 4, die verwendet werden können, um größere Dateien zu Bearbeiten.
Lesen Sie hier http://msdn.microsoft.com/en-us/library/dd997372.aspx
oder google-Memory-mapped-Dateien
InformationsquelleAutor Junnan Wang
Nur die Datei Lesen, Zeile für Zeile, mit streamreader, und verwenden Sie dann REGEX! Das Erstaunlichste Werkzeug der Welt.
InformationsquelleAutor Nicolai