Commit 331ec9b7 authored by Carver_Hu's avatar Carver_Hu

csv脚本

parent 0063ff3e
This diff is collapsed.
var fs = require('fs');
var parser = require('topsin.parser');
var _ = require('lodash');
var cl = require('console');
var csv_file = './confirmation-201912270900.csv'
//解析csv数据
var csv_data_parser = function(csv_file){
var file = fs.openFile(csv_file);
file.setCodec('UTF-8');
var csv_str = file.readAll();
//解析CSV字符串,变为数组格式
var csv_data = parser.parseCsvStr(csv_str);
return csv_data
};
var csv_data = csv_data_parser(csv_file);
//提取第一行字段名
var filed_row = csv_data[0];
//数据库连接
var db = require('topsin.database');
db.addConnection({
database_type:'pg',
database_host:'139.196.104.13:5433',
database_name:'PMO_TRAINING',
database_user:'toplinker',
database_pwd:'TopLinker0510'
}, "MES_DB");
//获取字段列表
var filed_list = db.query("MES_DB", function(query) {
return query.getFieldList('sec_production_order_confirmation_1');
});
// 查询当前数据库表中是否存在数据
var check_data_empty = db.query("MES_DB", function(query) {
return query.selectMap({
table:'sec_production_order_confirmation_1',
field: '*',
field_format:{"tags":'array', attr_data:'json'}
});
});
//查询当前数据库表中已存在的数据长度
var get_data = db.query("MES_DB", function(query) {
return query.selectArrayArray({
table:'sec_production_order_confirmation_1',
field: 'id',
field_format:{"tags":'array', attr_data:'json'},
// limit:3,
order:'id ASC',
// order:'id desc',
});
});
//查询
data_length = get_data.length
cl.log('当前数据库表已存在行数:' + data_length);
//最终批量插入的数据
var total_batch_data = [];
//需要插入的字段(字段增加的变化后面再处理)
var filed_list_insert = filed_list.slice(0, filed_row.length + 1);
//删除第一行的字段名
csv_data.shift();
//处理批量插入的数据格式
csv_data.forEach(function(item1){
var obj = {}
item1.forEach(function(item2, index){
//得到batchInsertc参数格式
obj[filed_list_insert[index+1]] = item2;
});
//追加对象
total_batch_data.push(obj);
});
//插入字段使不包含id
filed_list_insert.shift();
// 插入数据
var batch_insert = function(iData){
var result = db.query("MES_DB", function(query) {
return query.batchInsert(
'sec_production_order_confirmation_1',
filed_list_insert,
iData
);
});
}
if(_.isEmpty(check_data_empty)){
// 第一次是直接插入
batch_insert(total_batch_data);
cl.log('本次插入数据:' + total_batch_data.length + ' 条');
}else{
//数据库存在数据就需要进行长度对比来插入新数据
batch_insert(total_batch_data.slice(data_length));
cl.log('本次插入数据:' + (total_batch_data.length-data_length) + ' 条');
};
\ No newline at end of file
No preview for this file type
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment