Sie verwenden v0.4 oder höher mit dem neuen refactor Unter der Annahme (dh csv-generieren, csv-parsen, Strom-Transformation und csv-stringify), können Sie die eingebaute in Transformation verwenden, um Überspringe die erste Zeile mit ein wenig zusätzlicher Arbeit.
var fs = require('fs'),
csv = require('csv');
var skipHeader = true; // config option
var read = fs.createReadStream('in.csv'),
write = fs.createWriteStream('out.jsonish'),
parse = csv.parse(),
rowCount = 0, // to keep track of where we are
transform = csv.transform(function(row,cb) {
var result;
if (skipHeader && rowCount === 0) { // if the option is turned on and this is the first line
result = null; // pass null to cb to skip
} else {
result = JSON.stringify(row)+'\n'; // otherwise apply the transform however you want
}
rowCount++; // next time we're not at the first line anymore
cb(null,result); // let node-csv know we're done transforming
});
read
.pipe(parse)
.pipe(transform)
.pipe(write).once('finish',function() {
// done
});
Im Wesentlichen verfolgen wir die Anzahl der Zeilen, die transformiert wurden und wenn wir auf dem ersten ein (und wir in-fact den Header über skipHeader
Bool überspringen), dann passieren null
an den Rückruf als zweiter Parameter (der erste ist immer ein Fehler), ansonsten das transformierte Ergebnis übergeben.
Dies funktioniert auch mit synchronem Parsen, erfordert aber eine Änderung, da im synchronen Modus kein Rückruf erfolgt. Die gleiche Logik könnte auch auf die ältere v0.2-Bibliothek angewendet werden, da sie auch eine eingebaute Zeilenumwandlung aufweist.
Siehe http://csv.adaltas.com/transform/#skipping-and-creating-records
Dies ist sehr einfach anzuwenden und IMO hat eine ziemlich geringe Stellfläche. Normalerweise möchten Sie die Zeilen verfolgen, die für Statuszwecke verarbeitet wurden, und ich wandle fast immer die Ergebnismenge um, bevor Sie sie an Writable senden. Daher ist es sehr einfach, zusätzliche Logik hinzuzufügen, um zu überprüfen, ob die Kopfzeile übersprungen wird. Der zusätzliche Vorteil hier ist, dass wir das selbe Modul benutzen, um die Überspringlogik anzuwenden, wie wir analysieren/transformieren müssen - keine zusätzlichen Abhängigkeiten sind nötig.
Haben Sie Glück dabei? Ich benutze die gleiche Bibliothek und habe die gleiche Frage .. – ac360