Ich habe eine 1,4 GB CSV-Datei, die ich Zeile für Zeile durchlaufen und jede Zeile analysieren möchte. Sobald jede Zeile geparst wurde, fügen Sie diese Zeile zum Stream hinzu und schreiben Sie die Ausgabe als tsv-Datei. Ich dachte, dass der folgende Code funktioniert, aber es fügt einfach jede Zeile an das Ende der vorherigen Zeile hinzu, ohne Zeilenumbrüche hinzuzufügen, wie ich es erwartet hatte. Ich versuchte auch, .pipe(split2())
der Linie vor dem .pipe(writeStream)
hinzuzufügen, um die Daten vor dem Schreiben zu teilen, aber das die Anwendung einfach einfror.Knoten Stream von CSV, Transform und Stream zu TSV
Hat jemand erfolgreich mit diesem Prozess in Knoten gelesen und geschrieben?
var fs = require('fs'),
_ = require('lodash'),
split2 = require('split2'),
through2 = require('through2');
fs.createReadStream('input_file_name.csv')
.pipe(split2())
.pipe(through2.obj(function (chunk, enc, callback) {
// Process the CSV row
var row = _.zipObject(['header1', 'header2', 'header3'], chunk.toString().split(','));
this.push(processRow(row).join('\t')); // does an action to each row
callback()
}))
.pipe(fs.createWriteStream('output_file_name.tsv'));