我使用spring-batch和spring-data-jpa来读取大型csv数据文件,并使用hibernate将这些条目保存(或更新现有)条目到postgresql数据库。
如何配置弹簧以使用批量/批量插入?
配置作业step
时,我会相应地设置chunk
尺寸:
StepBuilderFactory step;
step.chunk(10000).reader(csvReader).writer(jpaItemWriter).build();
我是否还需要关注hibernate.jdbc.batch_size
财产?我是否也必须设置它,可能与块大小相同?
答案 0 :(得分:0)
当您设置块大小时,您的阅读器将以指定的块发送数据到编写器。所以块大小决定了弹簧批量中db的实际批量更新。
我不认为batch_size很重要,因为您已针对特定步骤设置了特定块大小的作业。
答案 1 :(得分:0)
在写入数据库时,还需要使用批量更新查询。 Google JDBC Bulk updates了解详细信息 - 因此,根据您执行JDBC查询的方式,您需要使用相应的批量更新机制