经过测试,当前excel导入功能,20000 条数据平均导入用时在 0.5h 左右。现要求将 50000+ 的数据量导入时间控制在 10m 之内。 使用 10000条数据进行测试,结果如下: Excel文件读取用时 数据检查用时 ...
经过测试,当前excel导入功能,20000 条数据平均导入用时在 0.5h 左右。现要求将 50000+ 的数据量导入时间控制在 10m 之内。
使用 10000条数据进行测试,结果如下:
| Excel文件读取用时 | 数据检查用时 | 数据库写入用时 |
| 3.2m | 1.3m | 1.2m |
nn
打开Excel导入代码,我们可以看到是调用了jxl,并使用了三层for循环

我们了解到jxl在大数据量上的读取速度表现远不如poi,具体差异如下(数据来源于网络):
| 文件大小 | POI加载耗时 | POI总耗时 | JXL加载耗时 | JXL总耗时 |
| 57KB | 1172ms | 1172ms | 1265ms | 2250ms |
| 652KB | 2297ms | 2313ms | 4406ms | 9705ms |
| 2.24M | 3109ms | 3140ms | 16313ms | 37453ms |
nn
所以我们着手于将原JXL的读取方式改为POI的读取方式

修改之后测试发现,10000条数据导入速度降至30秒左右,50000条在1分20秒左右,效果明显。
之后又通过将原来数据检查和数据插入方法中的 update 与 insert 语句替换为 marge into ,(这个我会另开一篇讲),最终10000条数据导入的总用时在40秒左右,50000条数据导入的总用时在2分钟左右。
原文地址:https://blog.csdn.net/qq_32692315/article/details/87873672?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168475006116800192211331%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168475006116800192211331&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-16-87873672-null-null.142^v87^control_2,239^v2^insert_chatgpt&utm_term=java%E4%BC%98%E5%8C%96
评论
登录后即可评论
分享你的想法,与作者互动
暂无评论