将百万excel数据导入到数据库?
需要解决问题:
1、冥等,防止重复插入
2、效率,不能太慢
3、错误处理,如果添加失败
解决方案
我会采用 EasyExcel 流式读取 + 固定大小线程池 + 分批事务(每批 500~1000 条)+ 数据库唯一索引保证幂等 + INSERT IGNORE 或 ON DUPLICATE KEY UPDATE + Future 收集结果 的方案。每个批次独立事务,失败只回滚当前批次,不影响其他批次;对于可恢复异常(如死锁、锁等待超时)进行有限次数重试,对于最终失败的批次记录批次号、数据范围和异常原因,支持后续单独重试,而无需重新导入全部数据。同时避免逐条查询数据库校验,而是依赖唯一索引或批量查询,大幅减少数据库访问次数,提升整体导入性能。这样既保证了高性能,也保证了幂等性和可恢复性。
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...)
ON DUPLICATE KEY UPDATE column1 = value1, column2 = value2
相关文章
-
B树与B+树的区别
B树与B+树的区别
NEW个对象 2024-12-25
-
高并发秒杀系统,需要考虑哪些问题,以及解决方案
高并发秒杀系统,需要考虑哪些问题,以及解决方案
NEW个对象 2026-06-08
-
什么是反射机制?为什么慢?
反射机制是指在运行时能获取到自身信息,只要给出类名,就可以访问类的属性和方法。
NEW个对象 2025-01-09