Lee archivos CSV en JavaScript desde el lado del servidor con la librería csv-parse.
CSV (Comma-Separated Values o valores separados por coma en español) es un tipo de archivo de texto habitual para guardar información en forma tabular. La coma sirve para delimitar valores en celdas de tabla y una nueva línea define cuándo empieza y termina una fila.
Para un formato tan simple, es posible usar cualquier lenguaje de programación. En este caso, lo haremos con JavaScript (Node.js) del lado del servidor. Y digo “simple” porque podríamos obtener los datos de forma tan sencilla como:
const contents = `nombre,edad,ciudad\nMichael,25,New York\nAndrea,30,Munich`;const lines = contents.split('\n');const data = lines.map(line => line.split(','));console.log(data);
Sin embargo, el problema viene cuando queremos tratar con archivos de gran tamaño. Para manipular los datos de forma eficiente, te propongo usar la librería csv-parse
.
Crear directorio del proyecto y moverse a él
mkdir mi-proyecto-csvcd mi-proyecto-csv
Inicializar un proyecto Node.js
npm init -y
Instalar la librería csv-parse
npm install csv-parse
csv-parse
para manipular datos de un archivo CSVSupongamos que tenemos un archivo datos.csv
con el siguiente contenido:
nombre,edad,ciudadMichael,25,New YorkAndrea,30,MunichCharles,28,Moscow
Creamos un script en Node.js para leerlo y procesarlo:
import fs from 'fs'import { parse } from 'csv-parse'
fs.createReadStream('datos.csv') .pipe(parse({ columns: true, delimiter: ',', from_line: 2 })) .on('data', (row) => { console.log(`Nombre: ${row.nombre}, Edad: ${row.edad}, Ciudad: ${row.ciudad}`); }) .on('end', () => { console.log('Archivo CSV procesado correctamente.'); }) .on('error', (err) => { console.error('Error al leer el archivo:', err); });
fs.createReadStream('datos.csv')
: Abre el archivo CSV para lectura en streaming..pipe(parse({ columns: true, delimiter: ',', from_line: 2 }))
: Usa csv-parse
para procesar el archivo con cabeceras..on('data', (row) => {...})
: Escucha cada fila parseada y la imprime en consola..on('end', () => {...})
: Se ejecuta cuando termina la lectura del archivo..on('error', (err) => {...})
: Gestiona posibles errores en la lectura.Parsear archivos CSV en Node.js es sencillo con la librería csv-parse
, que permite manejar datos estructurados de manera eficiente, incluso en archivos grandes. Con esta librería, podemos leer archivos CSV en streaming sin necesidad de cargar todo el contenido en memoria.
Para más información sobre la librería, consulta la documentación oficial.