有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

要分块读取的java大文件

我需要一个进程,一个大文件,并插入到数据库,不想花费大量的内存做同样的事情。我知道我们可以通过使用apache commons API或缓冲读取器在流模式下读取行。。。。bt我希望以批处理模式在DB中插入,比如在一次执行时插入1000次,而不是一次接一次。。。。逐行读取文件、添加到列表、计算大小、插入和刷新行列表是实现这一点的唯一选项吗


共 (1) 个答案

  1. # 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了解更多信息