将多条数据拆分进行插入,这样效率会高一点,不会造成堆内存溢出异常!否则数据量大会造成堆异常溢出异常,所以将其拆分成多条分批插入。
// 假如这里是从文件中读取的数据
// 可能是一个数据量很大的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("数据解析入库完成!");
}
当然这并不是最优方案!
评论区