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-csvCSV-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 Auch in der Bibliothek
Arbeiten mit YAML in Rust: Die Bibliothek serde_yaml
Datenvalidierung in Swift: Die Bibliothek Validator
Integration von Prometheus-Metriken in C++-Anwendungen: Die Bibliothek prometheus-cpp
GameplayKit für Swift: Komplettguide mit Beispielen
gRPC für TypeScript: Bibliotheken, Einrichtung und Codebeispiele