Java 如何在JOOQ中清除批次?
我试图在执行多个插入时重用准备好的语句。差不多Java 如何在JOOQ中清除批次?,java,sql,jooq,Java,Sql,Jooq,我试图在执行多个插入时重用准备好的语句。差不多 InsertValuesStepN<Record> batch = create.insertInto(table, fields); for(int i=0; i<100000; i++) { batch.values(); if(i % 1000 == 0) { batch.execute(); // need to call clearBatch here so we don'
InsertValuesStepN<Record> batch = create.insertInto(table, fields);
for(int i=0; i<100000; i++) {
batch.values();
if(i % 1000 == 0) {
batch.execute();
// need to call clearBatch here so we don't insert records twice
}
}
InsertValuesStepN batch=create.insertInto(表、字段);
对于(int i=0;i)为每个批创建新语句:
您可以在每个批上创建一个新语句,而不是重用前一个语句
InsertValuesStepN批处理=null;
对于(int i=0;iThanks但导入API在大容量插入之间不保持语句打开。我看到每次插入后都有关闭和打开准备语句的调用。这通常不会有问题,但我看到打开准备语句需要约20秒。@TrevorKramer:有趣的是,保持打开语句确实值得探索。这可以通过Query.keepStatement()
API(我假设您调用了它,但在您的问题中忽略了它)实现,但不能通过loadInto()实现
API。我已经为此创建了一个功能请求:。打开语句需要20秒的时间吗?尽管如此,这似乎太多了……我已经用一个方法的建议更新了答案,我通常不会建议,因为存在开放的客户端性能问题(请测量它是否影响您)。