Arbeiten mit CSV in Node.js: Bibliotheken csv-parser und csv-writer
CSV (Comma-Separated Values) ist eines der beliebtesten Formate zum Speichern und Austauschen von Tabellendaten. Im Node.js-Ökosystem gibt es viele Werkzeuge für die Arbeit mit diesem Format. In diesem Artikel betrachten wir zwei besonders praktische und leichtgewichtige Bibliotheken: csv-parser zum Lesen und csv-writer zum Schreiben von CSV-Dateien.
Installation der Bibliotheken
Installieren Sie zunächst beide Bibliotheken über npm:
npm install csv-parser csv-writerLesen von CSV-Dateien mit csv-parser
Die Bibliothek csv-parser wandelt CSV-Daten in einen Stream von JavaScript-Objekten um. Sie basiert auf Node.js Streams, was eine effiziente Verarbeitung auch sehr großer Dateien ermöglicht, ohne sie vollständig in den Speicher laden zu müssen.
Basisbeispiel zum Lesen
Erstellen wir eine Datei users.csv mit folgendem Inhalt:
name,age,cityAnna,28,MoskauIvan,35,Sankt PetersburgMaria,22,KasanJetzt lesen wir sie mit csv-parser:
const fs = require('fs');const csv = require('csv-parser');
const results = [];
fs.createReadStream('users.csv') .pipe(csv()) .on('data', (data) => results.push(data)) .on('end', () => { console.log('Datensätze gelesen:', results.length); console.log('Erster Datensatz:', results[0]); // Ausgabe: { name: 'Anna', age: '28', city: 'Moskau' } });Einstellung von Trennzeichen und Kopfzeilen
csv-parser unterstützt verschiedene Einstellungen. Wenn Ihre CSV-Datei beispielsweise ein Semikolon als Trennzeichen verwendet:
fs.createReadStream('users.csv') .pipe(csv({ separator: ';' })) .on('data', (row) => console.log(row));Wenn die Datei keine Kopfzeilen enthält, können Sie diese manuell angeben:
fs.createReadStream('data.csv') .pipe(csv({ headers: ['id', 'product', 'price'] })) .on('data', (row) => console.log(row));Schreiben von CSV-Dateien mit csv-writer
Die Bibliothek csv-writer ermöglicht das Erstellen von CSV-Dateien aus Objekt-Arrays. Sie unterstützt verschiedene Kodierungen und Trennzeichen.
Erstellen einer einfachen CSV-Datei
const createCsvWriter = require('csv-writer').createObjectCsvWriter;
const csvWriter = createCsvWriter({ path: 'output.csv', header: [ { id: 'name', title: 'Name' }, { id: 'age', title: 'Alter' }, { id: 'city', title: 'Stadt' } ]});
const records = [ { name: 'Anna', age: 28, city: 'Moskau' }, { name: 'Ivan', age: 35, city: 'Sankt Petersburg' }, { name: 'Maria', age: 22, city: 'Kasan' }];
csvWriter.writeRecords(records) .then(() => console.log('CSV-Datei erfolgreich erstellt'));Zusätzliche Einstellungen von csv-writer
Sie können das Feldtrennzeichen ändern, ein BOM für die korrekte Darstellung von Kyrillisch in Excel hinzufügen und die Kodierung angeben:
const createCsvWriter = require('csv-writer').createObjectCsvWriter;
const csvWriter = createCsvWriter({ path: 'output_utf8.csv', header: [ { id: 'name', title: 'Name' }, { id: 'age', title: 'Alter' } ], fieldDelimiter: ';', alwaysQuote: true, encoding: 'utf8'});Praktisches Beispiel: Konvertierung von JSON in CSV
Häufig besteht die Aufgabe, JSON-Daten in das CSV-Format zu konvertieren. Hier ist ein vollständiges Beispiel:
const fs = require('fs');const createCsvWriter = require('csv-writer').createObjectCsvWriter;
// Ursprungsdatenconst jsonData = [ { id: 1, product: 'Laptop', price: 75000, quantity: 10 }, { id: 2, product: 'Maus', price: 1500, quantity: 50 }, { id: 3, product: 'Tastatur', price: 3500, quantity: 30 }];
// Konfiguration des CSV-Schreibersconst csvWriter = createCsvWriter({ path: 'products.csv', header: [ { id: 'id', title: 'ID' }, { id: 'product Auch in der Bibliothek
Kryptographie in TypeScript: Verschlüsselung und Hashing in der Praxis
TypeBox für TypeScript: Komplettguide mit Praxisbeispielen
SMS-Versand mit TypeScript: API-Bibliotheken und Integration
QR-Code-Generator in C++ mit libqrencode und CQRcode