Ich habe eine CSV-Datei namens "A.csv". Ich muss eine neue CSV-Datei namens "B.csv" mit Daten von "A.csv" generieren.
Ich werde eine Teilmenge von Spalten aus "A.csv" verwenden und muss die Werte einer Spalte auf neue Werte in "B.csv" aktualisieren. Letztendlich werde ich diese Daten von B.csv verwenden, um sie gegen eine Datenbank zu validieren.
- Wie erstelle ich eine neue CSV-Datei?
- Wie kopiere ich die Daten der erforderlichen Spalten von A.csv nach "B.csv"?
- Wie füge ich Werte für eine bestimmte Spalte hinzu?
Ich bin neu in Ruby, aber ich kann CSV lesen, um ein Array oder einen Hash zu erhalten.
Antworten:
Wie Mikeb betonte, gibt es die Dokumente - http://ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html - oder Sie können den folgenden Beispielen folgen (alle sind getestet und Arbeiten):
So erstellen Sie eine neue Datei:
In dieser Datei haben wir zwei Zeilen, eine Kopfzeile und eine Datenzeile, sehr einfache CSV:
Ergebnis ist eine Datei namens "file.csv" mit folgenden Angaben:
So hängen Sie Daten an eine CSV an
Fast die gleiche Formel wie oben, nur anstatt den "wb" -Modus zu verwenden, verwenden wir den "a +" - Modus. Weitere Informationen hierzu finden Sie in dieser Antwort zum Stapelüberlauf: Welche Modi und Optionen für Ruby File.open gibt es?
Wenn wir jetzt unsere Datei file.csv öffnen, haben wir:
Lesen Sie aus unserer CSV-Datei
Jetzt wissen Sie, wie Sie eine Datei kopieren und in eine Datei schreiben, eine CSV lesen und daher die Daten zur Manipulation abrufen, die Sie gerade ausführen:
Dies ist natürlich eine von hundert verschiedenen Möglichkeiten, wie Sie mit diesem Juwel Informationen aus einer CSV abrufen können. Für weitere Informationen empfehle ich, die Dokumente zu besuchen, sobald Sie eine Grundierung haben: http://ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html
quelle
Hast du Rubys CSV-Klasse gesehen? Es scheint ziemlich umfassend. Überprüfen Sie es hier: http://ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html
quelle
Sie werden wahrscheinlich verwenden wollen
CSV::parse
Ruby helfen, Ihre CSV als Datentabelle zu verstehen und einen einfachen Zugriff auf Werte per Header zu ermöglichen.Leider ist die verfügbare Dokumentation zur
CSV::parse
Methode nicht sehr deutlich, wie sie tatsächlich für diesen Zweck verwendet werden soll.Ich hatte eine ähnliche Aufgabe und wurde viel mehr von How to Read & Parse CSV Files With Ruby unterstützt Parsen von auf rubyguides.com unterstützt als durch die Dokumentation der CSV-Klasse oder durch die Antworten, die von hier darauf verweisen.
Ich empfehle, diese Seite vollständig zu lesen. Der entscheidende Teil besteht darin, eine bestimmte CSV in ein
CSV::Table
Objekt umzuwandeln, indem:Jetzt gibt es eine Dokumentation zur
CSV::Table
Klasse , aber auch hier können Ihnen die klaren Beispiele auf der Seite rubyguides.com mehr helfen. Eine Sache, die ich hervorheben werde, ist, dass.parse
die resultierende Tabelle die erste Datenzeile als Zeile behandelt , wenn Sie angeben , dass Header erwartet werden sollen[0]
.Sie werden wahrscheinlich besonders an der
.by_col
Methode interessiert sein, die für Ihr neuesTable
Objekt verfügbar ist . Auf diese Weise können Sie verschiedene Spaltenindexpositionen in der Eingabe und / oder Ausgabe durchlaufen und entweder von einer zur anderen kopieren oder der Ausgabe einen neuen Wert hinzufügen. Wenn es funktioniert, komme ich zurück und poste ein Beispiel.quelle