PostgreSQL node.js编写了语句最大绑定

时间:2016-07-23 10:51:49

标签: node.js postgresql prepared-statement node-postgres

我正在尝试通过node-postgres对Postgres进行大量的大量插入 当绑定数组超过65536个值时,然后传递给postgres剩下的值,当它运行查询时我会收到错误

[error: bind message supplies 4 parameters, but prepared statement "" requires 65540]

有什么想法? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

node-postgres中的准备语句不适合批量插入,因为它们不支持多查询语句。并且你不应该同时在所有插入中扩展变量数组,这不会很好地扩展,它有自己的限制,就像你在那里击中的那样。

相反,您应该使用多值插入,格式为:

INSERT INTO table(col1, col2, col3) VALUES
(val-1-1, val-1-2, val-1-3),
(val-2-1, val-2-2, val-2-3),
...etc

在这样的查询中拆分批量插入,最多包含1,000 - 10,000条记录,具体取决于每条记录的大小,并作为简单查询执行。

另请参阅Performance Boost文章,以更好地了解INSERT可扩展性。