使用Sequelize mysql更新批量数据

时间:2017-12-14 08:50:38

标签: mysql node.js sequelize.js sequelize-cli

我想更新超过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*****")
        }
    }); 

1 个答案:

答案 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函数

相关问题