如何使用Spring-Data JPA保留数百万条记录

时间:2017-09-15 10:48:46

标签: java spring hibernate jpa

我有一个超过100万条记录的csv文件。我想对这些记录进行一些处理,并将所有记录保存在DB中。

我尝试过几个选项。

  1. 将所有实体保存在一个GO

    jpaepository.save(实体);

  2. 这种方法需要永远,永远不会竞争。适用于较小的记录。

    1. 逐个保存所有实体

      entities.forEach(jpaRepository ::保存);

    2. 这种方法已经完成,但需要大量时间,并且内存使用量很大。

1 个答案:

答案 0 :(得分:1)

以下是我推荐的内容,仅基于您的问题 -

  1. 创建一个读取文件的服务,比如FileReaderService
  2. 创建一次写入一定数量的记录的服务,让我们称之为StorageService。将其注入FileReaderService
  3. @Transactional方法上添加save_N_records注释。
  4. StorageService.save_N_records反复拨打FileReaderService。每次调用它时,请务必写一个日志来监控进度。
  5. 如果可能,我会禁用表格上的索引,因此插入更快,然后在插入完成后重新打开。当然,这在在线系统上永远不可能,仅在离线报告系统上。希望这有帮助!