csv-parse
v5.5.6
Published
CSV parsing implementing the Node.js `stream.Transform` API
Downloads
23,673,018
Maintainers
Readme
CSV parser for Node.js and the web
The csv-parse
package is a parser converting CSV text input into arrays or objects. It is part of the CSV project.
It implements the Node.js stream.Transform
API. It also provides a simple callback-based API for convenience. It is both extremely easy to use and powerful. It was first released in 2010 and is used against big data sets by a large community.
Documentation
Main features
- Flexible with lot of options
- Multiple distributions: Node.js, Web, ECMAScript modules and CommonJS
- Follow the Node.js streaming API
- Simplicity with the optional callback API
- Support delimiters, quotes, escape characters and comments
- Line breaks discovery
- Support big datasets
- Complete test coverage and lot of samples for inspiration
- No external dependencies
- Work nicely with the csv-generate, stream-transform and csv-stringify packages
- MIT License
Usage
Run npm install csv
to install the full CSV module or run npm install csv-parse
if you are only interested by the CSV parser.
Use the callback and sync APIs for simplicity or the stream based API for scalability.
Example
The API is available in multiple flavors. This example illustrates the stream API.
import assert from 'assert';
import { parse } from 'csv-parse';
const records = [];
// Initialize the parser
const parser = parse({
delimiter: ':'
});
// Use the readable stream api to consume records
parser.on('readable', function(){
let record;
while ((record = parser.read()) !== null) {
records.push(record);
}
});
// Catch any error
parser.on('error', function(err){
console.error(err.message);
});
// Test that the parsed records matched the expected records
parser.on('end', function(){
assert.deepStrictEqual(
records,
[
[ 'root','x','0','0','root','/root','/bin/bash' ],
[ 'someone','x','1022','1022','','/home/someone','/bin/bash' ]
]
);
});
// Write data to the stream
parser.write("root:x:0:0:root:/root:/bin/bash\n");
parser.write("someone:x:1022:1022::/home/someone:/bin/bash\n");
// Close the readable stream
parser.end();
Contributors
The project is sponsored by Adaltas, an Big Data consulting firm based in Paris, France.
- David Worms: https://github.com/wdavidw