如何使用node.js在mySQL中进行批量更新

时间:2016-05-24 13:42:49

标签: mysql node.js

我想要批量更新数据我有超过50行要在节点JS中的对象数组中更新。就像是 documented as safe when using MultimapBuilder.treeKeyshttps://github.com/felixge/node-mysql

var updateData=[ 
    {a: '15',b: 1,c: '24',d: 9,e: 1,f: 0,g: 0,h: 5850,i: 78 },
    {a: '12',b: 1,c: '21',d: 9,e: 1,f: 0,g: 0,h: 55,i: 78 },
    {a: '13',b: 1,c: '34',d: 9,e: 1,f: 0,g: 0,h: 58,i: 78 },
    {a: '14',b: 1,c: '45',d: 9,e: 1,f: 0,g: 0,h: 585,i:78 },
    {a: '16',b: 1,c: '49',d: 9,e: 1,f: 0,g: 0,h: 85,i: 78 } 
]
my query is : update table set a= updateData.a ,b= updateData.b ,c = updateData.c , d==updateData.d ,e=updateData.e,f=updateData.f where e=updateData.e

2 个答案:

答案 0 :(得分:3)

据我所知,没有直接的方法在mySQL中进行批量更新记录。但是有一个解决方法 - 您可以执行多个插入语句,然后执行查询以获得所需的结果。

为此,在创建连接时允许它执行多个语句,因为它在默认情况下被禁用。

var connection = mysql.createConnection({
          host     : dbConfig.host,
          user     : dbConfig.user,
          password : dbConfig.password,
          database : dbConfig.database,
          multipleStatements: true
 });

然后,通过操作您拥有的输入,使用以下语法构建批量更新查询。

  

查询1; QUERY2; QUERY3;

说,对于Instance,

 update table set a='15', b=1, c='24', d=9, e=1, f=0, g=0, h=5850, i=78;update table set a='12', b=1, c='21', d=9, e=1, f=0, g=0, h=5850, i=78;

然后,照常执行查询,

connection.query(sqlQuery, params, callback);

希望这有帮助。

答案 1 :(得分:1)

您可以通过在mysql连接中启用多语句功能来实现此目的。然后,您可以循环遍历updateData并构造由&#39 ;;'分隔的mysql语句。您可以看到此in this answer的示例。