2016-05-24 3 views
3

データを一括して更新したいのですが、ノードJSのオブジェクトの配列に更新する行が50を超えています。 https://github.com/felixge/node-mysqlHow do I do a bulk insert in mySQL using node.jsnode.jsを使用して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 

答えて

1

のようなものは、あなたは複数のステートメントは、MySQLの接続に備えて有効にすることによって、これを達成することができます。次に、updateDataをループして、 ';'で区切られたmysql文を構築することができます。このin this answerの例を見ることができます。

1

私が知る限り、mySQLでは一括更新レコードを直接行う方法はありません。しかし、これには対処法があります。複数の挿入文を実行してから、目的の結果を得るためにクエリを実行することができます。

これを行うには、接続を作成する際に、デフォルトで無効になっている複数のステートメントを実行できるようにします。

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

次に、入力内容を操作して、以下の構文で一括更新クエリを作成します。

Query1; Query2; Query3;

インスタンスのセイ、

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); 

は、この情報がお役に立てば幸いです。

関連する問題