Maintenance
消除數據清洗中的重複記錄
我有一個數據庫,裡面有很多人的簡單資訊,比如名字、姓氏、電子郵件、位置……。我需要消除重複記錄。正如我所搜尋的那樣,該過程稱為“數據清理中的重複消除”。有誰知道一個好的開源工具來做到這一點?
使用 T-SQL & PL/SQL,您可以使用 ROW_NUMBER() OVER (PARTITION BY) 來查找和刪除表中的重複記錄。
請參閱一些最佳範例從 SQL Server 中的表中刪除重複項 以及如何刪除重複行?以及Oracle ‘Partition By’ 和 ‘Row_Number’ 關鍵字
對於 PostgreSQL,您可以使用“簡單”的 SQL 語句來執行此操作,該語句可能適用於其他 SQL 數據庫,幾乎不需要調整:
http://wiki.postgresql.org/wiki/Deleting_duplicates
請注意,它會刪除所有具有更高 ID 的條目,最好知道…
DELETE FROM tablename WHERE id IN (SELECT id FROM (SELECT id, row_number() over (partition BY column1, column2, column3 ORDER BY id) AS rnum FROM tablename) t WHERE t.rnum > 1);