csv-load-sync

Sync loading of a small .csv file

csv-load-sync

Sync loading routine for a small comma-separated values file (.csv). Returns an array of objects, takes property names from the first line. Assumes everything is a string in quotes.

Requires nodejs

npm install csv-load-sync

Example CSV file with two records

"deviceId","description"
"1","iPhone 4"
"2","iPhone 4S"

Example CSV file with three records

"id","firstName","lastName","country","lastLogin"
"1","John","Smith","US","2013-08-04 23:57:38"
"2","Greg","Smith","US","2013-07-12 13:27:18"
"3","Harold","Smith","GB","2013-07-16 21:17:28"
var loader = require('csv-load-sync');
var csv = loader('path/to/file.csv');
// csv is an Array of objects 

Sometimes CSV data includes commas naturally, for example the follwing file has GPS location numbers which should be considered together.

"place","location"
"home",-41.20,20.11
"work",-41.3,20.2

We need to split each record line differently. You can pass the line to columns splitter function when calling load

function split(linelineNumber) {
  if (lineNumber === 0) { // title line 
    return line.split(',')
  }
  // our line will be <location>,<lat>,<lon> 
  // and we want to combine lat and lon 
  var parts = line.split(',')
  return [parts[0], parts[1] + ',' + parts[2]];
}
var results = load(filename, {
  getColumns: split
});
/*
[{
  place: 'home',
  location: '-41.20,20.11'
}, {
  place: 'work',
  location: '-41.3,20.2'
}]
*/

Author: Gleb Bahmutov © 2015

License: MIT - do anything with the code, but don't blame me if it does not work.

Spread the word: tweet, star on github, etc.