批量导入大数据以及数据去重,CSV多线程导入100w数据到数据库 思想

mysql层面去重:mysql中如何不重复插入满足某些条件的重复的记录的问题 - BruceFighting - 博客园
数据库层面具体使用哪个sql语句去重,根据业务情况来定。

1.Excel批量导入10w数据量,多用户同时导入,2个字段相同去重(不包括主键)

数据库连接池默认开启连接50,最大100

由于mybatis有一次sql的大小限制或者数据库也有大小限制,因此可以将其分为多个list集合,使用ExcutorService、callable、futuretask、countdownlatch(用于计算分段list集合个数),多线程并发插入数据。程序方面对Excel中的数据去重:将数据封装为对象,对象重写equals方法和hashCode方法,这里equals就只对那2个字段进行比较即可,并将对象放入set中去重。数据库方面去重:利用数据库设置联合唯一索引。然后通过insert ignore into语句去执行。insert ignore into:重复或语句错误报错都会被忽略(根据主键和唯一索引判断重复)

2.Excel批量导入10w数据量,多用户同时导入,除去主键其余字段相同去重

程序方面的去重与上一点大致相同。区别是equals和hashCode需要判断全部的属性字段。

以上也可以考虑用redis的zse

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值