Los archivos CSV son un formato de almacenamiento de datos conveniente y puede usarlos en sus proyectos de Node.js para manejar cualquier cosa, desde la configuración hasta los datos sin procesar. Pueden simplificar el intercambio de información entre dos aplicaciones, incluso si están escritas en diferentes idiomas.
En Node.js, puede usar varios métodos para leer y escribir archivos CSV.
Este tutorial le muestra cómo usar el módulo fs y el paquete NPM fast-csv para leer y escribir archivos CSV.
Configuración del proyecto
Para seguir este tutorial, asegúrese de tener Node.js instalado en su máquina. Ejecute este comando para verificar:
node -v
Debería devolver un número de versión. Si no tiene instalado Node.js, siga las instrucciones de este tutorial de instalación para hacerlo.
En su directorio preferido, cree una nueva carpeta llamada parse-csv.
mkdir parse-csv
Navegue a parse-csv y cree un nuevo archivo. Nómbrelo parseCSV.js.
cd parse-csv
touch parseCSV.js
Ahora puede comenzar a trabajar con CSV.
Uso del módulo fs
El módulo fs (abreviatura de sistema de archivos) contiene varios comandos para interactuar con el sistema de archivos en Node.js.
Leer todo el archivo a la vez
Los comandos readFile() y readFileSync() del módulo fs le permiten leer el contenido del archivo en Node.js. La diferencia entre estos comandos es que readFileSync() es síncrono, bloquea la ejecución de otros JavaScript, mientras que readFile() es asíncrono o no bloquea.
Dado que la lectura de archivos CSV puede llevar un poco de tiempo, especialmente para archivos grandes, a menudo es mejor usar el comando sin bloqueo, readFile() , como se muestra a continuación.
const fs = require('fs');
fs.readFile('csvdemo.csv', 'utf8', function (err, data) {
/* parse data */
});
Si no tiene un archivo CSV de muestra, puede generar uno desde mockaroo . También puede aprender cómo crear un archivo CSV usted mismo.
Leer línea por línea
Si bien readFile() funciona, consume mucha memoria, ya que lee todo el archivo CSV de una sola vez. Esto es un problema, especialmente cuando se trabaja con archivos CSV de gran tamaño. Una alternativa es leer una línea a la vez usando el comando fs.createReadStream() .
const fs = require("fs");
const readline = require("readline");
const stream = fs.createReadStream("./csvdemo.csv");
const rl = readline.createInterface({ input: stream });
let data = [];
rl.on("line", (row) => {
data.push(row.split(","));
});
rl.on("close", () => {
console.log(data);
});
Aquí, está pasando el nombre del archivo CSV a fs.createReadStream() para crear una secuencia legible. Las secuencias le permiten trabajar con grandes cantidades de datos al permitirle acceder a ellos en fragmentos.
Una vez que cree la transmisión legible, pásela al método readline.createInterface() . El módulo readline proporciona una interfaz para leer los datos una línea a la vez. Ahora puede enviar cada fila a la matriz de datos a medida que se lee.
Tenga en cuenta, sin embargo, que este código simplemente divide cada fila en comas. Aunque esto funcionará con el archivo CSV más básico, el formato es en realidad más complicado de lo que su nombre indica. El análisis manual de archivos CSV no es un enfoque sólido, especialmente si usted mismo no tiene el control de los datos. Para la mayoría de las situaciones, debe usar una biblioteca CSV.
Usando fast-csv
Para analizar archivos CSV de manera confiable, puede usar una biblioteca como fast-csv , que está disponible como un paquete npm. Hace que sea más fácil no solo leer archivos CSV sino también formatearlos.
Para comenzar, inicialice npm e instale fast-csv .
npm init -y
npm i fast-csv
Lea los archivos CSV usando fast-csv de la siguiente manera.
En el código anterior, comience creando un flujo legible desde el archivo CSV y luego conéctelo al método de análisis desde CSV rápido usando pipe() . Tenga en cuenta que está pasando la opción de encabezados a csv.parse() . Esto salta la primera fila. Establezca los encabezados en falso si la primera fila de su archivo CSV no contiene encabezados.
Como el archivo CSV se lee una fila a la vez, está empujando cada fila a la matriz de datos. Después de leer todo el archivo, puede manipular el contenido de la matriz de datos como desee.
Hay más de una forma de analizar un CSV
Los archivos CSV son útiles para almacenar grandes conjuntos de datos porque es fácil analizarlos. En Node.js, puede usar el módulo fs integrado o los paquetes NPM.
Usar una biblioteca como fast-csv es mucho más fácil y más robusto que escribir su propio código de análisis manualmente. Algunos otros paquetes para analizar CSV son csv-parser y papa parser .