Node.JS

Parsear CSV con NodeJS y csv-parse

Node.JS ha ganado popularidad para programar aplicaciones del lado del servidor utilizando JavaScript. Parsear o leer un archivo CSV (valores separados por coma) es algo requerido muchas veces, por ejemplo, para importar datos o simplemente como medio de comunicación.

Parsear y leer CSV en Node.JS con csv-parse

Es por eso que en este artículo explico cómo abrir, leer y parsear un archivo CSV utilizando Node.JS (el lenguaje JavaScript del lado del servidor) y un módulo llamado csv-parse que nos facilitará la tarea.

Requisitos e instalación de librería

Primero hay que instalar NPM y NodeJS (o actualizarlo). Más tarde, se debe ejecutar npm install --save csv-parse. Recuerda que si no se cuenta con un proyecto iniciado, se debe iniciar con npm init.

Por cierto, ya se vio anteriormente cómo parsear un CSV desde PHP.

Sobre la librería

La documentación oficial está aquí.

Ejemplo y explicación de uso de csv-parse con Node.js

Aquí está un ejemplo completo y funcional. Dejo el código, y más abajo lo explicamos. Lo que se hace es abrir un archivo con el módulo fs y pasarlo a través de una tubería al parseador de CSV.

Gracias al poder de GitHub y los gists, se pueden poner todos los archivos necesarios.

See the gist on github.

Por cierto, si el CSV no se ve bien haz click en view raw. Ahí está también el package.json para que se vean las dependencias. Ahora sí vamos al código.

Lo de abrir el archivo se encarga el módulo fs; de ahí lo importante es cómo se pasa al parseador a través de pipe. Como vemos, pasamos algunas opciones que ya tienen valores por defecto pero que es son importantes de mencionar.

  1. El delimitador, que por defecto es la coma pero podría ser cualquier carácter dependiendo del CSV.
  2. La opción para castear; ya que al leer se ponen todos los valores como cadena, incluso si son números. Con la opción puesta en true, se intenta parsear a los tipos nativos.
  3. El carácter que indica que las líneas que comienzan con él son un comentario. Lo puse sólo como ejemplo con el carácter de #.

Más abajo se escucha al evento readable, y se obtiene la fila. La fila es una línea del CSV y a su vez un arreglo. El arreglo, en cada índice, tiene una columna. Para este caso que es un archivo de productos, el nombre de los mismos está en fila[0].

Por otro lado, si se desea llevar un índice de la fila se podría poner un contador global y aumentarlo en cada llamada al evento.

Al finalizar la lectura con fs, se termina también al parseador llamando al método end.

Descargar y ejecutar código

Puedes descargar el código del index.js con el package.json (también debes descargar el de productos.csv). Una vez que tengas instalado NPM ejecuta npm install y luego node index.js; lo que ejecutará el archivo e imprimirá los resultados.

Probar ejemplo online

Si no quieres complicarte, puedes ejecutar el ejemplo aquí, sin salir del navegador.

Conclusiones

Tal vez parezca un ejemplo simple, pero no lo es. Lo hice de manera sencilla para que lo puedas aplicar fácilmente en lo que sea que estés haciendo. Además, esto de leer con streams y esas cosas hace que se pueda trabajar con archivos grandes sin sacrificar el rendimiento.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

3 días hace

Enviar mensaje con bot de Telegram usando JavaScript (lado del cliente)

Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…

4 días hace

PHP: incrustar imagen en base64

El día de hoy te enseñaré algo muy sencillo pero útil al programar con PHP:…

4 días hace

Plugin ESC POS – Actualización 3.4.0: imprimir HTML

El plugin para imprimir en impresoras térmicas alcanza hoy su versión 3.4.0 agregando soporte para…

5 días hace

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

2 semanas hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

2 semanas hace

Esta web usa cookies.