有个36.6G的csv文件,需要去重并导入到数据库(顺序无所谓,只需要结果是一个无重复的表),如何处理?
ringa_lee
如果 Foo 欄位不能重複,那麼定義 Unique 就好了,自動去掉了:
CREATE TABLE xxx ( ... Foo varchar unique not null, ... );
你可以全部匯入資料庫然後透過sql操作刪除重複的資料
對可能重複的欄位建立一個唯一索引
插入的時候用insert ignore into ...
可以用bash, 先是sort, 然後用awk檢查相鄰行是否一樣,如果不一樣就輸出到一個新的檔案。這樣其實速度並不慢,但是可能需要很多空間。
比較好的做法是在導入時讓資料庫自己處理,例如前面所說的定義unique域。
如果 Foo 欄位不能重複,那麼定義 Unique 就好了,自動去掉了:
你可以全部匯入資料庫然後透過sql操作刪除重複的資料
對可能重複的欄位建立一個唯一索引
插入的時候用insert ignore into ...
可以用bash, 先是sort, 然後用awk檢查相鄰行是否一樣,如果不一樣就輸出到一個新的檔案。這樣其實速度並不慢,但是可能需要很多空間。
比較好的做法是在導入時讓資料庫自己處理,例如前面所說的定義unique域。