Javascript 使用Knex.js时发生大容量插入错误:bind消息提供了X个参数,但准备好了语句"&引用;需要Y
使用Knex.js对PostgreSQL 11.2进行大插入时Javascript 使用Knex.js时发生大容量插入错误:bind消息提供了X个参数,但准备好了语句"&引用;需要Y,javascript,node.js,database,postgresql,knex.js,Javascript,Node.js,Database,Postgresql,Knex.js,使用Knex.js对PostgreSQL 11.2进行大插入时 await knex(myTable).insert(largeArray); 我们得到了错误 bind消息提供47078个参数,但准备好的语句“”需要9353190 问题:有没有一种方法可以在Knex.js中不使用绑定进行大型插入?或者在PostgreSQL中是否有一个参数可以更改以允许像这样的大型插入 我相信我已经使用Sequelize.js ORM来执行类似大小的插入(大小是这个的1/2),而没有这样的错误,但是我更愿意不使
await knex(myTable).insert(largeArray);
我们得到了错误
bind消息提供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,你可以试试objective.js
,它更像是knex上的一个高级助手库,用于提供常用的东西,而不是真正的ORM