Arbeiten mit CSV in Node.js: Bibliotheken csv-parser und csv-writer

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

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-writer


Lesen 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,Kasan


Jetzt 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

Empfehlungen