/* * @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; }