大文件要分块读取

时间:2019-05-27 17:43:44

标签: java java-8 apache-commons

我需要处理一个大文件并将其插入到Db中,并且不想花很多钱去做同样的事情。我知道我们可以使用apache commons API或缓冲的读取器以流模式读取行.... bt我希望以批处理模式插入DB中,例如1 go插入1000次插入,而不是1 by 1 ....正在读取文件逐行,添加到列表,计算大小,插入和刷新行列表是实现此目的的唯一选择?

1 个答案:

答案 0 :(得分:1)

根据您的描述,Spring-Batch非常合适。

基本上,它使用chunk概念来读取/处理/写入内容。顺便说一下,它可以是并发的。

    @Bean
    protected Step loadFeedDataToDbStep() {
        return stepBuilder.get("load new fincon feed").<com.xxx.Group, FinconFeed>chunk(250)
                .reader(itemReader(OVERRIDDEN_BY_EXPRESSION))
                .processor(itemProcessor(OVERRIDDEN_BY_EXPRESSION, OVERRIDDEN_BY_EXPRESSION_DATE, OVERRIDDEN_BY_EXPRESSION))
                .writer(itemWriter())
                .listener(archiveListener())
                .build();
    }

您可以参考here