大数据的验证和插入数据库

最近在做项目的时候涉及到大数据的校验和插入。问题描述:通过Excel导入客户信息表至数据库中指定表。

刚看到该问题,自然而然就是想直接将Excel解析至内存。在内存中遍历对应的客户List集合,取出每一个Customer和数据库中的数据进行比对判断该用户是否存在,存在的话在重复值上计数,不存在的话插入数据库。但是当数据达到10w+的时候,那个速度都不能直视了。思考解决方案,首先采用的解决方案:校验放在外层,里层进行判断分多线程执行。每个线程5k数据。只有5-6 k数据时,还可以。但是当数据量达到10w+时,速度还是很慢。后来测试发现,单单只是用插入其实速度还是可以的,但前面加上验证之后,就严重拖垮了插入速度。但验证还必须使用,苦恼了好一阵。后来通过在网上查找相关资料发现,有一个比较好的解决方案:在数据库的对应校验字段建立唯一索引,在插入的时候让数据库自己进行校验。代码逻辑和数据库分摊压力。在使用save时,由于建立了唯一索引所以插入会出问题,报DataIntegrityViolationException的异常。在Try,catch中将其捕捉,进行重复值的累计。这时,之前想要的效果已经实现。

转载于:https://www.cnblogs.com/pigga/archive/2013/06/03/10098326.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值