Trabajo con CSV en Node.js: bibliotecas csv-parser y csv-writer

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con CSV en Node.js: bibliotecas csv-parser y csv-writer



CSV (Comma-Separated Values) es uno de los formatos más populares para almacenar e intercambiar datos tabulares. En el ecosistema de Node.js existen muchas herramientas para trabajar con este formato. En este artículo veremos dos de las bibliotecas más convenientes y ligeras: csv-parser para lectura y csv-writer para escritura de archivos CSV.



Instalación de las bibliotecas



Para comenzar, instale ambas bibliotecas a través de npm:



npm install csv-parser csv-writer


Lectura de archivos CSV con csv-parser



La biblioteca csv-parser convierte datos CSV en un flujo de objetos JavaScript. Funciona basándose en Node.js Streams, lo que permite procesar eficientemente incluso archivos muy grandes sin cargarlos completamente en memoria.



Ejemplo básico de lectura



Creemos un archivo users.csv con el siguiente contenido:



name,age,cityAna,28,MadridJuan,35,BarcelonaMaría,22,Valencia


Ahora lo leeremos usando 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('Registros leídos:', results.length); console.log('Primer registro:', results[0]); // Salida: { name: 'Ana', age: '28', city: 'Madrid' } });


Configuración del separador y encabezados



csv-parser admite varias configuraciones. Por ejemplo, si su CSV usa punto y coma como separador:



fs.createReadStream('users.csv')  .pipe(csv({ separator: ';' }))  .on('data', (row) => console.log(row));


Si el archivo no tiene encabezados, puede especificarlos manualmente:



fs.createReadStream('data.csv')  .pipe(csv({ headers: ['id', 'product', 'price'] }))  .on('data', (row) => console.log(row));


Escritura de archivos CSV con csv-writer



La biblioteca csv-writer permite crear archivos CSV a partir de arreglos de objetos. Soporta diferentes codificaciones y separadores.



Creación de un archivo CSV simple



const createCsvWriter = require('csv-writer').createObjectCsvWriter;

const csvWriter = createCsvWriter({ path: 'output.csv', header: [ { id: 'name', title: 'Nombre' }, { id: 'age', title: 'Edad' }, { id: 'city', title: 'Ciudad' } ]});

const records = [ { name: 'Ana', age: 28, city: 'Madrid' }, { name: 'Juan', age: 35, city: 'Barcelona' }, { name: 'María', age: 22, city: 'Valencia' }];

csvWriter.writeRecords(records) .then(() => console.log('Archivo CSV creado exitosamente'));


Configuraciones adicionales de csv-writer



Puede cambiar el delimitador de campos, agregar BOM para la correcta visualización de caracteres cirílicos en Excel y especificar la codificación:



const createCsvWriter = require('csv-writer').createObjectCsvWriter;

const csvWriter = createCsvWriter({ path: 'output_utf8.csv', header: [ { id: 'name', title: 'Nombre' }, { id: 'age', title: 'Edad' } ], fieldDelimiter: ';', alwaysQuote: true, encoding: 'utf8'});


Ejemplo práctico: conversión de JSON a CSV



A menudo surge la tarea de convertir datos JSON al formato CSV. Aquí hay un ejemplo completo:



const fs = require('fs');const createCsvWriter = require('csv-writer').createObjectCsvWriter;

// Datos de origenconst jsonData = [ { id: 1, product: 'Portátil', price: 75000, quantity: 10 }, { id: 2, product: 'Ratón', price: 1500, quantity: 50 }, { id: 3, product: 'Teclado', price: 3500, quantity: 30 }];

// Configuración del escritor CSVconst csvWriter = createCsvWriter({ path: 'products.csv', header: [ { id: 'id', title: 'ID' }, { id: 'product

Recommendations