Skip to content

Instantly share code, notes, and snippets.

@jaywon
Created November 10, 2015 22:16
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save jaywon/e2067b689192f245cd7b to your computer and use it in GitHub Desktop.
Save jaywon/e2067b689192f245cd7b to your computer and use it in GitHub Desktop.
CSV import utility for Node
var fs = require('fs');
var csv = require('fast-csv');
var stream = fs.createReadStream('/home/jaywon/Downloads/modified-salary-per-state-per-jobtitle.csv');
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var masterList = [];
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/job-imports');
//define schema for import data
var JobSchema = Schema({
state: String,
id: String,
city: String,
date: String,
title: String,
salary: String,
average: String });
//attach schema to model
var Job = mongoose.model('Job', JobSchema);
//read in CSV as stream row by row
csv.fromStream(stream, {headers:true})
.on('data', function(data){
// console.log(data);
// masterList.push(data);
addJobToCollection(data);
})
.on('end', function(){
// console.log('done');
console.log(masterList.toString());
});
function addJobToCollection(data){
//scrub data for validation
data.salary = data.salary.replace(/,/g, '');
data.average = data.average.replace(/,/g, '');
//create model and save to database
var job = new Job(data);
job.save(function (err) {
if (err) // ...
console.log(err);
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment