csv-ew
v1.4.3
Published
CSV reading library
Downloads
12
Readme
CSV reading library
Installation
$ npm install --save csv-ew
Usage
const csv = require('csv-ew');
// customizing options up-front
const csv = require('csv-ew')({ trimColumns: true });
// making an instance available to other files
const csv = require('csv-ew');
csv.myCustomReader = csv({ trimColumns: true });
// freeing memory: delete csv.myCustomReader
// if Promise isn't defined
global.Promise = require('promise-module');
var csv = require('csv-ew');
Iterating through records of a CSV file
csv.eachEntry({
// MANDATORY FIELDS
filename: __dirname + '/mydata.csv',
// iterator: must return a promise with sync or async behavior
// called for each record in the csv file
iterator: record => new Promise((resolve, reject) => {
console.log(record);
setTimeout(resolve, 1000);
}),
// OPTIONAL FIELDS and their default values
delimiter: ',',
// specify the column names delimiter, or use the same one
headerDelimiter: 'auto',
// specify input CSV file encoding
encoding: 'utf-8',
// use same encoding, or a specific one for the first line
firstLineEncoding: 'auto',
// if true: " line " => "line"
trimLine: false,
// if true: use the CSV line (string) instead of turning it into an object
returnLines: false,
// if true: "value1, value2" => "value1,value2"
trimColumns: false,
// reject the promise when these cases occur
raiseOnEmptyLines: true,
raiseOnMissingColumns: true,
raiseOnExtraColumns: true,
// if false: the record will have values defined by the options "defaultValueOnEmptyColumn" "defaultValueOnMissingColumn"
skipEmptyLines: true,
// if true: use the CSV values (array) instead of turning it into an object
returnArrays: false,
// parse double-quoted values which can contain the delimiter and escaped double-quotes: ""
// i.e. "value1,"""value2"", containing the delimiter",value3"
handleQuotes: true,
// replace empty columns by this value
defaultValueOnEmptyColumn: '',
// replace missing columns by this value
defaultValueOnMissingColumn: null,
// use the first csv line, or specify an array
columnNames: 'auto',
// set this to true if columnNames is an array but the first CSV line is a header
skipFirstLine: false,
})
.then(() => console.log('last iteration completed.'))
.catch(console.error);
Converting JSON to CSV
Only few options are available for now.
csv.fromJson({
// MANDATORY FIELDS
// file name string or parsed JSON
input: __dirname + '/test.json',
// OPTIONAL FIELDS and their default values
// find from all json items, or specify an array
columnNames: 'auto',
})
.then(resultCsv => console.log(resultCsv))
.catch(console.error);
Running tests
$ npm install
$ npm test