我想用一个INSERT查询插入多行,例如:
INSERT INTO tmp(col_a,col_b) VALUES('a1','b1'),('a2','b2')...
Run Code Online (Sandbox Code Playgroud)
有没有办法轻松地做到这一点,最好是这样的对象数组:
[{col_a:'a1',col_b:'b1'},{col_a:'a2',col_b:'b2'}]
Run Code Online (Sandbox Code Playgroud)
我可能最终在一个块中有500条记录,因此运行多个查询是不可取的.
到目前为止,我只能为一个对象做到这一点:
INSERT INTO tmp(col_a,col_b) VALUES(${col_a},${col_b})
Run Code Online (Sandbox Code Playgroud)
作为一个附带问题:使用${}符号的插入是否可以防止SQL注入?
我在nodejs中使用以下代码使用pg(https://github.com/brianc/node-postgres)我的代码为员工创建订阅就是这样.
client.query(
'INSERT INTO subscriptions (subscription_guid, employer_guid, employee_guid)
values ($1,$2,$3)', [
datasetArr[0].subscription_guid,
datasetArr[0].employer_guid,
datasetArr[0].employee_guid
],
function(err, result) {
done();
if (err) {
set_response(500, err, res);
logger.error('error running query', err);
return console.error('error running query', err);
}
logger.info('subscription with created');
set_response(201);
});
Run Code Online (Sandbox Code Playgroud)
您已经注意到datasetArr是一个数组.我想一次为多个员工创建大量订阅.但是我不想循环遍历数组.有没有办法用pg开箱即用?