csv

CSV parser with simple api, full of options and tested against large datasets.

     _   _           _        _____  _______      __
    | \ | |         | |      / ____|/ ____\ \    / /
    |  \| | ___   __| | ___ | |    | (___  \ \  / /
    | . ` |/ _ \ / _` |/ _ \| |     \___ \  \ \/ /
    | |\  | (_) | (_| |  __/| |____ ____) |  \  /
    |_| \_|\___/ \__,_|\___| \_____|_____/    \/     New BSD License

This project provides CSV generation, parsing, transformation and serialization for Node.js.

It has been tested and used by a large community over the years and should be considered reliable. It provides every option you would expect from an advanced CSV parser and stringifier.

The csv package is itself split into 4 packages:

The full documentation for the current version 0.4 is available here while the previous documentation is still available here.

Installation command is npm install csv.

Each package is fully compatible with the stream 2 and 3 specifications. Also, a simple callback-based API is always provided for convenience.

Execute this script with the command node samples/callback.js.

var csv = require('csv');
 
csv.generate({seed: 1, columns: 2, length: 20}, function(errdata){
  csv.parse(data, function(errdata){
    csv.transform(data, function(data){
      return data.map(function(value){return value.toUpperCase()});
    }, function(errdata){
      csv.stringify(data, function(errdata){
        process.stdout.write(data);
      });
    });
  });
});

Execute this script with the command node samples/stream.js.

var csv = require('csv');
 
var generator = csv.generate({seed: 1, columns: 2, length: 20});
var parser = csv.parse();
var transformer = csv.transform(function(data){
  return data.map(function(value){return value.toUpperCase()});
});
var stringifier = csv.stringify();
 
generator.on('readable', function(){
  while(data = generator.read()){
    parser.write(data);
  }
});
 
parser.on('readable', function(){
  while(data = parser.read()){
    transformer.write(data);
  }
});
 
transformer.on('readable', function(){
  while(data = transformer.read()){
    stringifier.write(data);
  }
});
 
stringifier.on('readable', function(){
  while(data = stringifier.read()){
    process.stdout.write(data);
  }
});

Execute this script with the command node samples/pipe.js.

var csv = require('csv');
 
csv.generate({seed: 1, columns: 2, length: 20})
  .pipe(csv.parse())
  .pipe(csv.transform(function(record){
     return record.map(function(value){
       return value.toUpperCase()
     });
  }))
  .pipe(csv.stringify ())
  .pipe(process.stdout);

This parent project doesn't have tests itself but instead delegates the tests to its child projects.

Read the documentation of the child projects for addionnal information.