我想用一个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注入?
正如我已经在 Stackoverflow 上找到的那样,可以通过执行以下操作来更新一个查询中的多行
update test as t set
column_a = c.column_a,
column_c = c.column_c
from (values
('123', 1, '---'),
('345', 2, '+++')
) as c(column_b, column_a, column_c)
where c.column_b = t.column_b;
Run Code Online (Sandbox Code Playgroud)
特别感谢@Roman Pekar 的明确答复。
现在我正在尝试将这种更新方式与查询 NodeJS 中的 postgreSQL 数据库合并。
这是我的代码片段:
var requestData = [
{id: 1, value: 1234}
{id: 2, value: 5678}
{id: 3, value: 91011}
]
client.connect(function (err) {
if (err) throw err;
client.query(buildStatement(requestData), function (err, result) {
if (err) throw err;
res.json(result.rows);
client.end(function (err) {
if …Run Code Online (Sandbox Code Playgroud)