Arbeiten mit CSV in JavaScript (Node.js): Bibliotheken, Parsing und Datengenerierung

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 JavaScript (Node.js): vollständige Anleitung



CSV (Comma-Separated Values) ist eines der beliebtesten Formate für den Austausch von Tabellendaten. Im Node.js-Ökosystem gibt es mehrere leistungsstarke Bibliotheken zum Parsen, Generieren und Verarbeiten von CSV-Dateien. In diesem Artikel betrachten wir die wichtigsten Werkzeuge, ihre Installation, Anwendungsbeispiele und bewährte Verfahren.



Beliebte Bibliotheken für die Arbeit mit CSV in Node.js



In JavaScript (Node.js) werden für die Arbeit mit CSV am häufigsten drei Bibliotheken verwendet:



  • csv-parser — schneller Streaming-Parser, der im Streaming-Modus arbeitet
  • csv-stringify — Generator für CSV aus JavaScript-Objekten oder Arrays
  • fast-csv — universelle Bibliothek, die Parsing und Generierung vereint


Installation der Bibliotheken



Verwenden Sie npm, um die erforderlichen Pakete zu installieren:



npm install csv-parser csv-stringify fast-csv


CSV-Parsing mit csv-parser



Die Bibliothek csv-parser arbeitet im Streaming-Modus, wodurch Dateien beliebiger Größe verarbeitet werden können, ohne sie vollständig in den Speicher zu laden.



Beispiel: Lesen einer CSV-Datei



const fs = require('fs');const csv = require('csv-parser');

const results = [];

fs.createReadStream('data.csv') .pipe(csv()) .on('data', (row) => { results.push(row); }) .on('end', () => { console.log('CSV-Datei erfolgreich verarbeitet'); console.log('Erste Zeile:', results[0]); });


Standardmäßig verwendet csv-parser die erste Zeile der Datei als Kopfzeilen und gibt Objekte mit entsprechenden Schlüsseln zurück.



CSV-Generierung mit csv-stringify



Die Bibliothek csv-stringify ermöglicht die Erstellung von CSV-Zeichenfolgen aus JavaScript-Arrays oder -Objekten.



Beispiel: Erstellen von CSV aus Objekten



const { stringify } = require('csv-stringify');const fs = require('fs');

const data = [ { name: 'Ivan', age: 25, city: 'Moskau' }, { name: 'Maria', age: 30, city: 'Sankt Petersburg' }, { name: 'Alexei', age: 28, city: 'Kasan' }];

const writableStream = fs.createWriteStream('output.csv');

const stringifier = stringify({ header: true, columns: ['name', 'age', 'city']});

stringifier.pipe(writableStream);data.forEach(row => stringifier.write(row));stringifier.end();


Universelle Lösung: fast-csv



fast-csv bietet sowohl Parsing als auch Generierung von CSV und unterstützt verschiedene Formate (TSV, benutzerdefinierte Trennzeichen).



Beispiel: CSV-Parsing mit fast-csv



const fs = require('fs');const csv = require('@fast-csv/parse');

const rows = [];

fs.createReadStream('data.csv') .pipe(csv.parse({ headers: true })) .on('error', error => console.error(error)) .on('data', row => rows.push(row)) .on('end', (rowCount) => { console.log(`${rowCount} Zeilen verarbeitet`); console.log('Daten:', rows); });


Beispiel: CSV-Schreiben mit fast-csv



const fs = require('fs');const csv = require('@fast-csv/format');

const data = [ ['Name', 'Alter', 'Stadt'], ['Ivan', '25', 'Moskau'], ['Maria', '30', 'Sankt Petersburg']];

const ws = fs.createWriteStream('output.csv');csv.write(data, { headers: true }).pipe(ws);


Arbeiten mit großen Dateien und Leistung



Bei der Arbeit mit CSV-Dateien, die größer als 100 MB sind, wird die Verwendung von Streaming-Verarbeitung empfohlen. Alle drei betrachteten Bibliotheken unterstützen Streams.



Beispiel: Verarbeitung einer großen CSV zeilenweise



const fs = require('fs');const csv = require('csv-parser');

let rowCount = 0;

fs.createReadStream('large-file.csv') .pipe(csv()) .on('data', (row) => { rowC

Empfehlungen