使用 Knex.js 对 PostgreSQL 11.2 进行大型插入时,
await knex(myTable).insert(largeArray);
我们收到错误
绑定消息提供 47078 个参数,但预准备语句 " 需要9353190
问题:有没有办法在不使用绑定的情况下在 Knex 中完成大型插入.js?或者 PostgreSQL 中是否有一个参数,我们可以更改它以允许这样的大型插入?
我相信我已经使用Sequelize.js ORM来执行类似大小的插入(大小的1/2(,而没有这样的错误,但不希望将ORM用于我们当前的目的。
使用 knex 0.20.9、Node.js 12.14.1、PostgreSQL 11.2、TimescaleDB 1.6.0、Ubuntu 18.04.3
您需要批量添加数据。knex中有一个称为batchInsert()
的实用程序函数,可以帮助做到这一点。数据库的语句大小/绑定数有限。Sequelize 可能在内部进行批处理,因为它无法覆盖数据库服务器施加的限制。
如果您不想使用 ORM,您可以尝试objection.js
它更像是 knex 之上的高级辅助库,用于处理通常需要的东西,而不是真正的 ORM。