Uno de los modelos de almacenamiento de datos más elementales es el archivo plano. Dentro de las funciones más básicas de una aplicación web está la de servir dichos archivos, bien construyéndolos o bien  leyéndolos.  Entre los tipos de archivos planos existentes el CSV es de los más utilizados por su versatilidad,  ya que podemos organizar la salida de la información delimitada por caracteres especiales (donde por convención se escoge la coma como caracter de separación) .

En NodeJs podemos escribir una aplicación que nos permita construir archivos CSV haciendo uso de módulos de terceros como  ya-csv.

Instalando ya-csv

1
npm install ya-csv

Una vez que hayamos instalado el módulo, lo implementamos en un simple script.

1
2
3
4
5
6
var csv = require('ya-csv');
var writer = csv.createCsvFileWriter('ejemplo.csv');
var data = [['a','b','c','d','e','f','g'], ['h','i','j','k','l','m','n']];
data.forEach(function(rec) {
writer.writeRecord(rec);
});

 

Cambiando el delimitador

Este sencillo ejemplo nos demuestra como generar una salida básica de CSV, pero claro, las aplicaciones rara vez son básicas. ¿Que pasa si los datos contienen la coma en su mensaje?, simplemente la información a delimitar será erronea. Para solventar esto, el módulo nos pone a disposición unas opciones adicionales al momento de llamar al método createCsvFileWriter:

1
2
3
4
5
6
7
8
9
10
11
var csv = require('ya-csv');
var writer = csv.createCsvFileWriter('ejemplo.csv', {
'separator': '~',
'quote': '|',
'escape': '|'
});

var data = [['a','b','c','d','e','f','g'], ['h','i','j','k','l','m','n']];
data.forEach(function(rec) {
writer.writeRecord(rec);
});

Estas opciones incluyen el poder definir el caracter que queremos como separador, el que deseamos en lugar de las comillas y el que deseamos como caracter de escape.

 

Leyendo archivos CSV

El mismo módulo nos permite leer el contenido de una archivo CSV de la forma:

1
2
3
4
5
6
7
8
var csv = require('ya-csv');
var reader = csv.createCsvFileReader('ejemplo.csv');
var data = [];
reader.on('data', function(rec) {
data.push(rec);
}).on('end', function() {
console.log(data);
});

 

Manipulando CSV como un Stream

Por último, ya-csv nos permite interactuar  con los archivos CSV como un Stream, esto nos permite reducir la memoria operacional, ya que el Stream procesa pequeños “trozos” de información en lugar de todo el archivo en memoria, esto es particularmente efectivo y útil cuando el CSV es grande.

1
2
3
4
5
6
7
8
9
10
var csv = require('ya-csv');
var http = require('http');
http.createServer(function (request, response) {
response.write('[');
csv.createCsvFileReader('big_data.csv').on('data', function(data) {
response.write(((this.parsingStatus.rows > 0) ? ',' : '') + JSON.stringify(data));
}).on('end', function() {
response.end(']');
});
}).listen(8080);

 

Te Puede interesar

Realiza consultas a tu Base de datos MongoDB con NodeJs
Haz caché de contenido estático con NodeJs
Supervisor, un supervisor de scripts para NodeJs

(Visited 688 times, 1 visits today)