我正在尝试通过 node-postgres 对 Postgres 进行一些大批量插入 当绑定(bind)数组超过 65536 个值时,然后将其余值传递给 postgres,当它运行查询时,我会收到错误
[error: bind message supplies 4 parameters, but prepared statement "" requires 65540]
有什么想法吗? 提前致谢。
最佳答案
node-postgres
中的准备语句不适合批量插入,因为它们不支持多查询语句。而且你不应该同时在所有插入中拉伸(stretch)变量数组,这不会很好地扩展,它有它自己的限制,就像你在那里遇到的那样。
相反,您应该使用以下格式的多值插入:
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
可扩展性。
关于node.js - PostgreSQL node.js 准备语句最大绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38540913/