我想更新超过100k的数据,但我无法更新它。我正在使用Sequalize和mysql。 我首先从.txt文件中读取数据,然后根据表中已有的数据更新表数据。 我正在使用Sequalize,但更新100k记录需要1个多小时。 有没有办法使用Sequalize更新批量数据?
这是我的示例代码:
async.each(arrayData, function(_arrayData, _callback) {
var connection = index.connection;
let query = 'UPDATE debit_tran_reg SET response_status ='+'"'+_arrayData.response_status+'"'+',response_rejection_reason='+'"'+_arrayData.response_rejection_reason+'"'+',umrn_no='+'"'+_arrayData.umrn_no+'"'+'WHERE loan_no ='+'"'+_arrayData.loan_no+'"'+'';
connection.query(query).spread((results, metadata) => {
console.log("results> "+JSON.stringify(results));
});
_callback();
},function(err){
if(err){
console.log(err);
}else{
console.log("*****ALL DATA HAS BEEN PROCESSED*****")
}
});
答案 0 :(得分:0)
我会尝试这些选项:
我现在看到你为每一行运行一个不同的查询。我要做的第一件事就是在一个查询语句中收集它们并只运行一次。 像这样的东西(我会使用一个查询构建器来保护你免受注射):
var array = [
{id: 1, val:10}
{id: 2, val:15}
];
console.log(array.reduce((s,v)=> s+"update table set col1="+v.val+" where id="+v.id+";", ""))
然后在交易中运行。
您也可以尝试"模拟"在事务中使用DELETE和INSERT进行更新操作。批量插入听起来比多次更新更快。
编辑:将s +添加到reduce函数