bigdata-insert v0.0.3
Bigdata insert

A small utility tool to help insert rows to mysql database from a csv file.
Why should I care?
Say you have a big csv file (comma separated) which containe millions of rows and you want to insert those data into mysql database. How do you do that? Great news is that this package help you to that easily with minimum code if you are using sequlize.
Installation
$ npm install bigdata-insertUsage
const path = require('path');
const BigDataInsert = require('bigdata-insert');
/**
* Please note here, we are using sequilize as a dependency and
* these [models](http://docs.sequelizejs.com/manual/models-definition.html#import) are constructed using sequilize data structure
*/
const stocks = require('./data/models/stocks');
const prices = require('./data/models/prices');
const bdi = new BigDataInsert({
models: [
{
file: path.resolve('data/csv/stocks.csv'),
model: stocks,
},
{
file: path.resolve('data/csv/prices.csv'),
model: prices,
},
],
connection: {
dbname: 'stock-data',
user: 'root',
},
});
bdi.start();API(s)
constructor
Constructor has two parameter options and callback
constructor({
models: <Array of objects>,
connection: <Object>
}, callback)model parameter description
models: [{
file: <required : absolute path to csv file>,
model: <required : sequelize model structure>,
name: <optional : for model reference key>
}]connection parameter description
connection: {
dbname: <name of a database>,
user: <database username>,
pass: <database password>,
host: <database host>
}You can also define the connection settings in
.envfile like this
DATABASE_NAME = stock-data
DATABASE_USERNAME = root
DATABASE_PASSWORD =
DATABASE_HOST =callback parameter description
callback has a paramer which is a sequilze model defination. This callback helps to do association as per sequilize document. You need to define a name in each model while passing to the constructor.
Example
const bdi = new BigDataInsert(
{
models: [
{
file: path.resolve('data/csv/stocks.csv'),
model: stocks,
name: 'stocks',
},
{
file: path.resolve('data/csv/prices.csv'),
model: prices,
name: 'prices',
},
],
},
model => {
model.stocks.hasMany(model.prices, {
foreignKey: 'refer',
targetKey: 'symbol',
constraints: false,
});
}
);start()
To start the data insertion process
Example
bdi.start();