Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var mysql = require('mysql');
- var mysqlParams = {
- host : 'localhost',
- user : 'pk_central',
- password : 'xyz786',
- database : 'pk_central'
- };
- var _ = require("lodash");
- var Firebird = require('node-firebird');
- var options = {};
- options.host = '192.168.10.100';
- options.port = 3050;
- options.database = 'C:\\PKS4\\Data\\cmpdwin.pkf';
- options.user = 'READONLYUSER';
- options.password = 'ReadOnly1234$';
- options.role = null; // default
- options.pageSize = 4096; // default when creating database
- var cleanupObj = (obj) => {
- _.each(obj, (v, k) => {
- if(_.isNull(v) || _.isUndefined(v)) {
- obj[k] = null;
- } else if(_.isDate(v)) {
- obj[k] = v.getTime();
- } else if(_.isBuffer(v)) {
- obj[k] = v.toString('utf8');
- }
- });
- };
- var busy;
- var perpage = 50;
- var semaphore = 0;
- Firebird.attach(options, function(err, db) {
- if (err)
- throw err;
- var count_query = 'SELECT COUNT(*) FROM DOCTOR';
- db.query(count_query, function(err, result) {
- if (err)
- throw err;
- var total = result[0].COUNT;
- var pages = _.range(Math.ceil(total/perpage));
- _.each(pages, (p) => {
- busy = true;
- var data_query = 'SELECT FIRST '+perpage+' SKIP '+p*perpage+' DOCTOR_ID, MEMO FROM DOCTOR';
- console.log('COUNT QUERY: '+count_query);
- console.log('FETCH QUERY: '+data_query);
- db.query(data_query, function(err, result) {
- semaphore = 0;
- _.each(result, (tablerow) => {
- if(_.isFunction(tablerow.MEMO)) {
- semaphore++;
- tablerow.memo_string = '';
- tablerow.MEMO(function(err, name, e) {
- if (err)
- throw err;
- e.on('data', function(chunk) {
- tablerow.memo_string += chunk.toString("utf8").replace(/\\u([0-9]|[a-fA-F])([0-9]|[a-fA-F])([0-9]|[a-fA-F])([0-9]|[a-fA-F])/, '').replace(/\0[\s\S]*$/g,'');
- });
- e.on('end', function() {
- semaphore--;
- semaphore++;
- var connection = mysql.createConnection(mysqlParams);
- connection.connect();
- connection.query('REPLACE INTO DOCTOR_NOTES SET DOCTOR_ID = ?, NOTES = ?', [tablerow.DOCTOR_ID, tablerow.memo_string], function(err, result) {
- semaphore--;
- if(err) throw err;
- });
- connection.end();
- });
- });
- }
- require('deasync').loopWhile(() => { return semaphore>0 });
- });
- busy = false;
- });
- require('deasync').loopWhile(() => { return busy });
- });
- db.detach();
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement