合并SQL数据库中的类似条目

时间:2016-12-31 13:32:14

标签: python sql postgresql

我有一个数据库,用于记录电视节目的客人以及他们出现的剧集。主要是我有三张桌子:

访客(姓名,身份证)

剧集(日期,主题,ID)

EpisodeGuest(Episode ID,GuestID)

然而,经过检查,我发现许多客人被记录了几次,其名称的拼写略有不同。当我从网站上看到客人的样子时,这有点不可控制。

示例:

Peter N. Larsson

Peter N Larsson

Peter N. Larson

现在,这些名称被记录为具有多个外观的多个来宾。如何在不手动操作的情况下将这些合并为同一个人?客人输入姓氏和姓氏,所以在所有情况下,比方说,两个名称之间只有3个字符不同,其安全(足够)说它是同一个客人。

最好的方法是将其合并以通过每个名称,在3个字符内搜索远程相似的内容,并通过编辑EpisodeGuest表进行合并吗?

1 个答案:

答案 0 :(得分:2)

评论太长了。

Postgres有一个名为fuzzystrmatch的模块。该模块包含可以提供帮助的功能。我倾向于建议Levenshtein距离,但你可能会发现模块中的其他功能对你有效。

我会告诫你这个方法。首先,两个名字看起来非常相似的事实并不意味着他们是同一个人。其次,您需要手动检查结果。

然而,这个想法是让候选人使用这样的东西:

select t.name, t2.name
from t join
     t2
     on levenshtein(t.name, t2.name) < 4 and -- arbitrary number
        t.name <> t2.name;