Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var dra = require('date-range-array')
- var Client = require('ftp');
- var unzip = require('unzip');
- var csv = require('csv');
- var fs = require('fs');
- var db = require('../config/priceDB');
- var async = require('async');
- var headers;
- var fileName;
- var csvFileName;
- var dates = dra('2016-11-01', '2017-01-16')
- var counter = 1;
- var client = new Client();
- client.on('ready',function(){
- async.eachLimit(dates, 1,
- // on each iteration.
- function f(dateObj, cb) {
- fileName = 'mobile-' + dateObj + '.csv.zip'
- csvFileName = 'mobile-' + dateObj + '.csv'
- client.get(fileName, function(err, stream) {
- if (err) {throw err;}
- stream.once('close', function() {
- client.end();
- unzipFile(cb);
- });
- stream.pipe(fs.createWriteStream(__dirname + '/' + fileName));
- });
- // cb(null);
- },
- // on done
- function(err) {
- if (!err) {
- process.exit();
- }
- }
- );
- });
- client.connect({ host: 'abracar.ada-io.de', user: 'abracar_sync', password: 'Flo9c9_1'})
- function unzipFile(cb) {
- fs.createReadStream(__dirname + '/' + fileName)
- .pipe(unzip.Extract({ path: __dirname }))
- .on('close', function () {
- parseCSV(cb)
- })
- }
- function parseCSV(cb) {
- var parser = csv.parse({delimiter: ','});
- var transform = csv.transform(function(record, next){
- if (!headers) {
- headers = record
- next();
- } else {
- importToDB(record, next)
- }
- }, {parallel: 10000})
- .on("end", function (count) {
- fs.unlink(__dirname + '/' + fileName)
- fs.unlink(__dirname + '/' + csvFileName)
- cb(null)
- });
- fs.createReadStream(__dirname + '/' + csvFileName).pipe(parser).pipe(transform);
- }
- function importToDB(data, next) {
- var fields = headers.join();
- var values;
- var updateValues = '';
- var id;
- headers.forEach(function (header, key) {
- if (header === 'id') {
- id = data[key]
- }
- if (header === 'regdate') {
- if (data[key]) {
- var regdate = data[key].split('/')
- data[key] = db.escape(regdate[1] + regdate[0])
- }
- } else {
- data[key] = db.escape(data[key])
- }
- if (key === headers.length - 1) {
- updateValues += header + '=' + data[key];
- } else {
- updateValues += header + '=' + data[key] + ', '
- }
- })
- values = data.join();
- var insertQuery = 'INSERT INTO mobile_price(' + fields + ') VALUES (' + values + ')';
- var updateQuery = 'UPDATE mobile_price SET ' + updateValues + ' WHERE id=' + id;
- db.query('SELECT COUNT(1) AS priceCount FROM mobile_price WHERE id=' + id, function(err, rows) {
- counter++;
- console.log(counter)
- if (rows && rows[0] && rows[0].priceCount === 0) {
- db.query(insertQuery, function (err) {
- if (!err) {
- next();
- }
- })
- }else {
- db.query(updateQuery, function (err) {
- if (!err) {
- next();
- }
- })
- }
- })
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement