Trabajo con CSV en JavaScript (Node.js): bibliotecas y herramientas

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 JavaScript (Node.js): bibliotecas y ejemplos prácticos



CSV (Valores Separados por Comas) es uno de los formatos más comunes para el intercambio de datos tabulares. En el ecosistema de Node.js existen varias bibliotecas maduras que permiten leer, procesar y crear archivos CSV de manera eficiente. En este artículo revisaremos las principales herramientas, sus capacidades y proporcionaremos ejemplos prácticos de código.



Bibliotecas populares para trabajar con CSV



1. csv-parser — analizador de flujo rápido

Esta biblioteca es el estándar para leer CSV en Node.js. Funciona en modo flujo (stream), lo que permite procesar archivos de cualquier tamaño sin cargarlos completamente en memoria.



Instalación:

npm install csv-parser


Ejemplo de lectura de un archivo CSV:

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 leído exitosamente'); console.log(results.slice(0, 3)); // Primeros 3 registros });


Características clave:

  • Soporte para delimitadores personalizados (por defecto coma)
  • Detección automática de encabezados desde la primera línea
  • Posibilidad de omitir líneas vacías
  • Bajo consumo de memoria gracias al procesamiento por flujo


2. csv-stringify — creación de CSV a partir de objetos

Esta herramienta es parte de la familia csv y está diseñada para generar cadenas o flujos CSV a partir de objetos de JavaScript.



Instalación:

npm install csv-stringify


Ejemplo de escritura de datos en CSV:

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

const data = [ { name: 'Ana', age: 28, city: 'Madrid' }, { name: 'Juan', age: 35, city: 'Barcelona' }, { name: 'Olga', age: 22, city: 'Valencia' }];

const writableStream = fs.createWriteStream('output.csv');const stringifier = stringify({ header: true });

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

console.log('Archivo output.csv creado');


Capacidades:

  • Escape automático de caracteres especiales (comillas, comas)
  • Configuración del delimitador de columnas
  • Soporte para encabezados personalizados
  • Funcionamiento en modos síncrono y asíncrono


3. csv-writer — API simple e intuitiva

Esta biblioteca ofrece una interfaz más simple para escribir CSV, especialmente si trabajas con volúmenes pequeños de datos.



Instalación:

npm install csv-writer


Ejemplo de escritura:

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

const csvWriter = createCsvWriter({ path: 'users.csv', header: [ { id: 'id', title: 'ID' }, { id: 'name', title: 'Nombre' }, { id: 'email', title: 'Email' } ]});

const records = [ { id: 1, name: 'Alejandro', email: 'alex@example.com' }, { id: 2, name: 'María', email: 'maria@example.com' }];

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


Escenarios de uso avanzados



Procesamiento de archivos grandes con transformación de datos

Combinemos lectura y escritura en un mismo flujo para procesar datos sobre la marcha:



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

const readStream = fs.createReadStream('input.csv');const writeStream = fs.createWriteStream('output_transformed.csv');const stringifier = stringify({ h

Recommendations