pgBatchInsertTmp.js 2.83 KB
Newer Older
Clownce Deng's avatar
Clownce Deng committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
/*
 * @File: pgBatchInsert.js
 * @Description: pgsql批量插入数据测试
 * @Author: clownce.deng
 * @Date: 2020-05-13 14:40:00
 */

var _ = require("lodash");
var fs = require("fs");
var moment = require("moment");
var logger = require("topsin.logger");
var DB = require("topsin.database");
var error = require("topsin.error");
var console = require("console");
var process = require('process');
var config = require("./config");

try {
  var argv = process.argv;
  // 工作中心ID
  var wid = argv[1];
  // 插入数据行数
  var data_row_count = _.toNumber(argv[2]);
  if (_.isNaN(data_row_count) || data_row_count == 0) {
    throw "invalid parameter: " + argv[2];
  }
  // 初始化数据库连接
  var LOCAL_DB_CONN = 'LOCAL_DB_CONN';
  DB.addConnection(config.database_conf, LOCAL_DB_CONN);
  // 测试数据库连接
  var isConnected = DB.query(LOCAL_DB_CONN, function (q) {
    return q.isConnected();
  });
  if (!isConnected) {
    throw "Connect to local database failed.";
  }
  console.info("Connect to database sucessful.");
  // 生成随机数据
  console.info("start to build random data...");
  var logDataList = randomBuildLogList(wid, data_row_count);
  // 批量插入数据到数据库
  console.info("start to batchInsert data...");
  var query = DB.query(LOCAL_DB_CONN);
  query.begin();
  var beforeTime = moment();
  query.batchInsert("oee_machine_log_v2", _.keys(logDataList[0]), logDataList);
  if (query.lastError().isValid()) {
    query.rollback();
    throw "batchInsert data faild. " + query.lastError().text();
  }
  query.commit();
  var afterTime = moment();
  console.info("batchInsert data success.");
  var duration = moment.duration(afterTime.diff(beforeTime));
  console.info("elapsed time(seconds): " + duration.as("seconds"));
  fs.writeFile(config.work_path + "/process_" + wid + ".txt", duration.as("seconds"));

} catch (e) {
  console.error(e);
}

function randomBuildLogList(workcenter_id, row_count) {
  var dataCount = row_count;
  var retDataList = [];
  for (var index = 0; index < dataCount; index++) {
    var dataMap = {};
    dataMap['workcenter_id'] = workcenter_id;
    dataMap['log_time'] = moment().format("YYYY-MM-DD HH:mm:ss");
    dataMap['log_type'] = "info";
    dataMap['lot_no'] = "1234567890";
    dataMap['partnumber'] = "ABCDEFGH";
    dataMap['subpart'] = "test_part";
    dataMap['lot_serial'] = 12345;
    dataMap['station'] = "test_station";
    dataMap['state'] = "test_state";
    dataMap['programe_name'] = "test_program";
    dataMap['daq_time'] = moment().format("YYYY-MM-DD HH:mm:ss");
    dataMap['analysis_flag'] = true;
    dataMap['log_data'] = randomBuildMapData();
    retDataList.push(dataMap);
  }
  return retDataList;
}

function randomBuildMapData() {
  var retMap = {};
  for (var count = 1; count <= 10; count++) {
    retMap["test_key_" + count] = "test_value_" + count;
  }
  return retMap;
}