EasyExcel 并发读取文件字段并进行校验,数据写入到新文件,批量插入数据到数据库

该博客探讨了在公司项目中处理大量数据导入的需求,数据量在10万至100万行之间。重点在于实现单机版的数据统计功能,包括使用EasyExcel进行非阻塞式读取,通过注解实现校验规则,并采用并发操作处理读写和数据库插入。同时,介绍了错误数据的处理方式,以及未来的web版微服务接口设计。博客中还分享了一个旧版的demo链接供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

公司要求做一个数据统计类的功能,大概就是由每个地方采集数据用excel进行导入,根据地方大小每个文件的数量可能在10万-100万之间不等,导入时要求对每个字段进行校验,可能存在的规则有非空判断,时间格式判断,长度判断,手机号这类正则表达式类校验,文件有多个sheet,每个sheet对应一个表,对应的数量不确定但是不会重复表,有个别sheet需要前面sheet的字段判断。

如果数据有错的,要求在后面新加一列告诉用户错误的原因,正确的数据也要输出一遍(不理解客户的想法。。。),未来有可能会开新sheet单独列出错误的每条数据和错误内容。

最终版本分为单机版和web版,单机版让某些安全要求高的用户用,web版全国通用。

web版作为一个微服务项目提供接口道原来做的信息管理平台。

 

思路

由于web版可以采用的功能更丰富,如补充机制,定时任务,后台MQ异步数据处理等等,这里只谈谈单机版的demo思路。

遇到这类情况首先传统poi方式是行不通的,不过poi也有自己的事件监听机制,这里和EasyExcel是一样的,每一行一行的读取。

 

1.因为EasyExcel不支持多并发写入,所以这里采用了读、写,数据库插入并发操作。

2.校验规则由注解实现,启动时将需要校验的实体类扫描并存到一个容器里,读取每行数据时根据注解上的内容进行校验

3.本次尝试用非阻塞形式实现,因此出现大量的循环......需要注意的有主线程等待超时问题,子线程及时跳出循环问题,有错误数据及时停止数据库线程

4.子线程若执行时间过长也需要及时中断,防止出现线程死锁问题

 

老版本demo:https://download.csdn.net/download/bibiboyx/12897555

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值