Linux下刪除大數(shù)據(jù)文件中部分字段重復(fù)行的方法
發(fā)布時(shí)間:2014-04-24 11:48:00 作者:佚名
我要評(píng)論

找來(lái)找去linux下也沒(méi)找到合適的工具,sed/gawk等流處理工具只能針對(duì)一行一行處理,并無(wú)法找到字段重復(fù)的行??磥?lái)只好自己python一個(gè)程序了,突然想起來(lái)利用mysql,于是進(jìn)行乾坤大挪移
最近寫的一個(gè)數(shù)據(jù)采集程序生成了一個(gè)含有1千多萬(wàn)行數(shù)據(jù)的文件,數(shù)據(jù)由4個(gè)字段組成,按照要求需要?jiǎng)h除第二個(gè)字段重復(fù)的行,找來(lái)找去linux下也沒(méi)找到合適的工具,sed/gawk等流處理工具只能針對(duì)一行一行處理,并無(wú)法找到字段重復(fù)的行??磥?lái)只好自己python一個(gè)程序了,突然想起來(lái)利用mysql,于是進(jìn)行乾坤大挪移:
1. 利用mysqlimport --local dbname data.txt導(dǎo)入數(shù)據(jù)到表中,表名要與文件名一致
2. 執(zhí)行下列sql語(yǔ)句(要求唯一的字段為uniqfield)
use dbname;
alter table tablename add rowid int auto_increment not null;
create table t select min(rowid) as rowid from tablename group by uniqfield;
create table t2 select tablename .* from tablename,t where tablename.rowid= t.rowid;
drop table tablename;
rename table t2 to tablename;
1. 利用mysqlimport --local dbname data.txt導(dǎo)入數(shù)據(jù)到表中,表名要與文件名一致
2. 執(zhí)行下列sql語(yǔ)句(要求唯一的字段為uniqfield)
復(fù)制代碼
代碼如下:use dbname;
alter table tablename add rowid int auto_increment not null;
create table t select min(rowid) as rowid from tablename group by uniqfield;
create table t2 select tablename .* from tablename,t where tablename.rowid= t.rowid;
drop table tablename;
rename table t2 to tablename;
相關(guān)文章
linux中去掉文件重復(fù)數(shù)據(jù)行的方法(去重復(fù)ip)
本文介紹了linux系統(tǒng)中去掉一個(gè)文件中重復(fù)的數(shù)據(jù)行的方法,有需要的朋友參考學(xué)習(xí)下2014-04-24