node.js - PostgreSQL node.js 准备语句最大绑定(bind)

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

我正在尝试通过 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/

相关文章:

mysql - 准备好的语句获取数据库中的所有结果,但不是我要求的结果

php - 如何使用多个?在 PHP 的准备语句中

javascript - Node.js 在几次请求后卡住

sql - Postgres 按查询分组

java - Postgresql:在表创建期间分配默认时区

postgresql - 来自另一个容器内部的 Docker 端口不匹配

php - mysqli_fetch_assoc()需要参数/调用成员函数bind_param()错误。如何获取并修复实际的mysql错误?

javascript - Node 需要路径引用问题

node.js - 在 NodeJS 中访问 AWS SSM 参数

node.js - Azure 应用服务上使用 Node-sass 的 Express 应用