在oracle 11g中查找具有100M记录的表中的重复记录

时间:2013-06-18 04:54:49

标签: oracle duplicates arabic

我有一个拥有超过1亿个recrods的客户表。 customer_id是唯一的。但有些客户有超过1个customer_id。所以在某些文件中,id是不同的,其余的字段值是重复的或接近重复的。我特别关注名字和姓氏,以检测近似重复的记录。(名称是阿拉伯语格式而不是罗马化)。请帮助解决这个问题。

2 个答案:

答案 0 :(得分:1)

“其余字段值重复或接近重复......”

我会使用两种方法:一种用于重复字段,另一种用于近似重复字段。

  1. 重复的字段可以通过与@Emanuels答案类似的东西来解决。
  2. 近似重复更难,需要大量的反复试验。我所知道的大多数相似性测量都是围绕英语建立的,我不知道他们用阿拉伯名字表现得如何。请查看utl_match

    选择utl_match.edit_distance('mErry','mArry')FROM DUAL;

答案 1 :(得分:0)

delete from CUSTOMER
 where CUSTOMER_ID <> (select min(CUSTOMER_ID)
                         from CUSTOMER C
                        where C.FIRST_NAME = FIRST_NAME
                          and C.LAST_NAME = LAST_NAME)