千万数据去重_mysql去重,3亿多数据量

本文介绍了如何处理超过3亿条数据的去重问题。首先通过加载数据到大表并拆分为小表,然后使用存储过程对比大表进行去重。接着,利用哈希算法创建新表,并将去重后的数据插入。在处理过程中,还讨论了可能出现的错误及参数优化策略,包括设置特定的MySQL参数以提高性能。
摘要由CSDN通过智能技术生成

差不多3亿6千万数据,需要去重。因为数据量太大,所以:

将数据load data infile到大表里,不进行任何去重操作,没有任何约束。然后将数据分成几十个小表,用这几十个小表去对比大表去重。得到去重后的小表。去重以后的小表,根据字段进行hash算出后两位数字,重新建好新表,将去重后小表的数据,插入到带有hash数字新表中。

存储过程如下(去重):

DELIMITER //

/*tblname 动态控制表名*/

CREATE PROCEDURE create_imsi(IN tblname varchar(200))

begin

declare age int default 1;

declare done int(1) default 0;

declare v_imsi varchar(200);

/*定义游标*/

declare cur_l cursor for select imsi from sqlstr;

/*定义异常*/

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' set done=1;

drop view if exists sqlstr;

/*定义视图*/

set @tbl = CONCAT("create view sqlstr as select a.imsi from tbl_new a,(select imsi from phone_",tblname," group by imsi having count(imsi) > 1) b where a.imsi = b.imsi group by imsi"

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值