把list拆分成多个list分批插入到数据库

将多条数据拆分进行插入,这样效率会高一点,不会造成堆内存溢出异常!否则数据量大会造成堆异常溢出异常,所以将其拆分成多条分批插入。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 假如这里是从文件中读取的数据
// 可能是一个数据量很大的list
List<Article> articles = readCsv(file);
if (articles.size() > 0) {
// 一次插入的条数
int batchSize = 1000;
// 分成limit次插入到数据库
int limit = (articles.size() + batchSize - 1) / batchSize;
Stream.iterate(0, n -> n + 1)
.limit(limit)
.forEach(a -> {
List<Article> paperList = articles.stream()
.skip(a * batchSize)
.limit(batchSize)
.collect(Collectors.toList());
// doSomething();
articleMapper.batchInsert(paperList);
});
LOGGER.info("数据解析入库完成!");
}

当然这并不是最优方案!

点击查看

本文标题:把list拆分成多个list分批插入到数据库

文章作者:LiJing

发布时间:2022年01月05日 - 09:04:26

最后更新:2023年06月03日 - 09:56:02

原始链接:https://blog-next.xiaojingge.com/posts/192248487.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------------本文结束 感谢您的阅读-------------------