2008年11月13日星期四

消重 Mysql row data 记录

今天处理数据时由于 loading data 重复导致数据内容重复,不得已要进行消重.
方法如下:

1.先找出重复数据内容的ID,把ID存文件或是临时数据表
装数据内容存在test DB 中,为了删除方便存两列数据内容:SQL, ID
下面例子,从Redirect_Log表中找出重复的ID,存在test.tmp_delete_repeat_data_081112表中.


create table test.tmp_delete_repeat_data_081112
select concat("delete from `Redirect_Log` where id=",id,";") sqls, id
from
`tracking_smarter`.Redirect_Log
group by SessionID,VisitTime,Status,SourceSite,CurRandStr
having count(*)>1


说明:group by SessionID,VisitTime,Status,SourceSite,CurRandStr 是因为我的这个数据表必须这些字段一起 distinct 才可能标示唯一性.

2.执行SQL语句进行删除这些重复的ID
首先把test.tmp_delete_repeat_data_081112 表的数据内容倒出到文件

select sqls into outfile '/tmp/w.sql' from tabl1;

然后把文件内容load进mysql就可以了

mysql -uroot -p tracking < /tmp/w.sql

没有评论:

博客归档