【发布时间】:2012-01-13 19:11:36
【问题描述】:
我遇到了一个我似乎无法找到答案的问题。我在 PHP 中开发了一个非常小的类似 CRM 的应用程序,由 MySQL 驱动。此应用程序的用户可以通过上传的 CSV 文件将新数据导入数据库。我们现在正在努力解决的问题之一是重复的,或者更重要的是,接近重复的记录。例如,如果我有以下内容:
Record A: [1, Bob, Jones, Atlanta, GA, 30327, (404) 555-1234]
和
Record B: [2, Bobby, Jones, Atlanta, GA, 30327, Bob's Shoe Store, (404) 555-1234]
我需要一种方法来查看它们是否相似,获取包含更多信息的记录(在本例中为记录 B)并删除记录 A。
但这里变得更加复杂。这必须在导入新数据时完成,并且我可以执行一个函数来随时从数据库中删除重复项。我已经能够在 PHP 中将一些东西放在一起,从 MySQL 表中获取所有重复的行并通过电话号码匹配它们,或者通过在行中的所有列上使用 implode() 然后使用 strlen() 来确定最长的记录. 必须有一种更好的方法来做到这一点,而且更准确。
你们中的任何人有什么出色的建议可以让我实施或借鉴吗?很明显,当导入新数据时,我需要将他们的 CSV 文件打开到数组或临时 MySQL 表中,进行重复/类似搜索,然后重新编译 CSV 文件或将临时表中的所有内容添加到主表中。我想。 :)
我希望你们中的一些人能指出我可能遗漏的一些东西,这些东西可以适当地扩展,而且有些准确。我宁愿向一个有 5 条记录而不是 5,000 条记录的用户提供一份我们“不确定”的重复项列表。
提前致谢! 亚历克斯
【问题讨论】:
标签: php mysql duplicates