[英]'cannot insert multiple commands into a prepared statement' postgreSQL REST API
[英]Insert multiple rows using prepared statement
我有一個對象數組,每個對象都有多個屬性。 例如:
var obj = [{a : '1', b : '2'},{a : '3', b : '4'}];
為了匹配數據庫表的順序,我正在生成一個具有大容量插入所需順序的新數組。
var bulkInsert = function(arrData){
var orderedData = [];
arrData.forEach(function(obj){
orderedData.push(obj.b + ',' + obj.a);
});
return orderedData;
};
現在,我想將對象的輸出數組批量插入到postgres表中:
client.query("INSERT INTO sometable(b, a) VALUES" +
" ($1, $2)", [orderedData], function (err, result) {
if (err) {
return handleError(err, client, done);
}
});
但是,這將引發錯誤:
error fetching client from pool { [error: bind message supplies 1 parameters, but prepared statement "" requires 2]
如果插入的每種情況都在一個循環中進行迭代,則串行版本可以正常工作,但是對於較大的陣列,它將很慢。
嘗試從數組中刪除方括號。 它已經是一個數組,您不需要它們
您應該將參數作為兩個大小的數組傳遞。 為了同時插入兩行。 嘗試重復以下查詢兩次:
client.query("INSERT INTO sometable(b, a) VALUES" + " ($1, $2)", [1,2], function (err, result) { if (err) { return handleError(err, client, done); } });
client.query("INSERT INTO sometable(b, a) VALUES" + " ($1, $2)", [3,4], function (err, result) { if (err) { return handleError(err, client, done); } });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.