Mysql批量导入,批量更新

需求:通过excel导入20万条数据,目标表有40个字段,excel提供17个字段,后端入库前要对excel提供的每一个数据进行规则校验,并 为其余字段赋值,
目前方案:使用easyExcel+JDBC,手动创建关闭连接,手动提交,jdbc批量处理
读取20万条数据耗时15s,后端校验重新赋值15s,插入数据库30s
效率有点低,怎样优化提高效率呢

1.插入批量,最好用mybatis原生的foreach标签来处理。否则自行循环插入效率很低。
2.我觉得你消耗的时间更多在于数据处理。你需要自行优化。
3.easyExcel读取的时候一次读取2000左右就行,不要大量数据读取进内存。

  • 使用批处理插入,将多行数据打包在一起,一次性提交到数据库。这可以减少JDBC的网络开销和数据库开销,从而提高性能。
  • 将校验和重新赋值的过程放到导入过程中,这样可以减少操作数,从而提高效率。可以通过编写自定义的监听器实现此功能。
  • 将数据分批读取,而不是一次性读取20万条数据。可以将数据分成多个文件,每个文件包含一定数量的记录,然后使用多个线程同时导入这些文件。
  • 调整数据库的缓存大小,以使插入操作更快。可以增加JVM的内存限制,以便在一次操作中缓存更多的数据。