【问题标题】:how to fix spelling mistakes in a database have multiple records in that records there are more records如何修复数据库中的拼写错误 在该记录中有多个记录 还有更多记录
【发布时间】:2019-05-15 10:28:49
【问题描述】:

我有一个数据库,在这些表中包含国家、城市、州和酒店国家名称有多个相同的记录,例如 mexico 被错误地拼写为 maxico 和 mxico 和 mexico,其他记录如美国和美利坚合众国和美国这些类型的记录有多个相同的拼写错误的州,并且州有多个拼写错误的城市,但酒店是独一无二的,我希望他们将它们设置为正确的城市、州和国家,例如。一些酒店位于芝加哥市伊利诺伊州,国家是美国。请帮助我如何解决这个问题

【问题讨论】:

  • 从长远来看,您应该在客户端中添加一些验证,这样就不会出现错误的输入,否则您将不得不一遍又一遍地修复这个问题。
  • 我已经通过一一检查这些表解决了这个问题,因为这些表是通过唯一的 id 相互映射的,所以我进行了连接查询并删除了不需要的一个并将右一个替换为原始城市,州和国家,因为这非常耗时,但我只能通过这种方式来纠正此问题

标签: sql


【解决方案1】:

如果您知道所有不正确的不同场景,您可以进行更新

  update tbl
  set city = 'Mexico'
  where city in ('maxico', 'mxico') 

【讨论】:

    【解决方案2】:

    嗯,你可以列出country列的所有值,然后检查值是否正确,如果错误,只需使用update子句修复错误的值,如下所示:

      update my_table set country = 'Mexico' where country in ('maco', 'xico');
    

    【讨论】:

      【解决方案3】:

      这取决于您正在运行的基础架构。

      如果您可以使用某些 ETL 工具,它们通常具有 DataQuality 功能,通常带有用于更正地址的数据库。这些通常是有偿的。

      如果您是“私人”开发者,那么您可能不想使用付费数据,因此您可以寻找开放数据源,例如 https://catalog.data.gov allegheny country addresses

      您可以使用多种算法和解决方案,从单词空间中的简单距离到为此进行预训练的神经网络。

      【讨论】:

        【解决方案4】:

        这种类型的数据问题很难。没有内置的简单方法来确定“正确的拼写”。许多数据库都内置了两种可以提供帮助的功能之一——“soundex”算法或 Levenshtein 距离。

        你应该怎么做?如果您真的想解决此问题,请使用拼写错误的名称和所需的正确值创建一个表。 此表需要手动维护,例如在电子表格中。然后在导入数据时使用此表,并仅使用校正后的值。

        更好的是,设置一个仅包含正确名称的参考表。使用替代名称创建第二个表,如上维护。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-28
          • 1970-01-01
          • 2023-03-20
          相关资源
          最近更新 更多