我在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);
});
正如你已经注意到的,datasetArr是一个数组。我想一次为多个员工创建批量订阅。但是我不想在数组中循环。有没有办法用pg开箱即用?
6条答案
按热度按时间epfja78i1#
我搜索了同样的问题,但还没有找到答案。使用async库,多次使用查询并执行必要的错误处理非常简单。
可能这个代码变体有帮助。(将10.000个小JSON对象插入到空数据库需要6秒)。
克里斯托夫
42fyovps2#
在我看来,最好的方法是使用PostgreSQL json函数:
im9ewurl3#
要从NodeJS批量插入PostgreSQL,更好的选择是使用Postgres和pg-copy-streams提供的'COPY'命令。
代码片段来自:https://gist.github.com/sairamkrish/477d20980611202f46a2d44648f7b14b
更精细的细节explained in this link
iibxawm44#
将数据结构创建为:
然后将其转换为字符串:
将其附加到查询中,就完成了!
同意它有字符串解析成本,但它的方式比单一插入便宜。
ep6jt1vc5#
您可以使用
json_to_recordset
在Postgresql中解析json这与使用
json_populate_recordset
的Sergey Okatov's answer非常相似。我不知道这两种方法有什么区别,但是使用这种方法在处理多列时语法更清晰
56lgkhnf6#
使用ORM;例如:反对
此外,根据数据库服务器和所需的活动连接数增加连接池大小。