背景:最近在做一个功能改造,老系统Excel导入导出大批量数据,要求支持一次性导入30万条数据,一次性导出50万条数据,还需要对数据进行校验,另外对性能有要求,不能比老系统的性能差。和业务了解了老系统导入30万的数据耗时为10分钟左右,导出50万数据耗时1分钟左右。
说实话刚开始了解需求的时候有点慌,之前没有做过这么大批量数据的导入导出,因为这是跳槽进公司的第一个需求,怕做不好得滚蛋。
-------------------------------------------分割线-------------------------------------------
项目技术栈:Springboot + Mybatis + Oracle + Redis + Apollo
家里的电脑配置,以下部分测试是使用家里的电脑进行:CPU:I5-7500 RAM:8G 硬盘:固态硬盘
一、导入Excel问题汇总及解决方案:
1、内存溢出、读取文件性能太差(和电脑的配置有关)
a) 使用POI工具的常规读取Excel文件方式导致内存溢出
POI读取Excel文件代码:
FileInputStream in = new FileInputStream(file); Workbook wk = new XSSFWorkbook(in);
测试的Excel文件大小为: