我正在处理一个涉及多个数据库实例的问题,每个实例都有不同的表结构。问题是,在这些表之间,有很多很多重复,我需要一种方法来有效地找到它们,报告它们,并可能消除它们。
例如。我有两个表,第一个表,CustomerData
其中的字段:
_countId, customerFID, customerName, customerAddress, _someRandomFlags
我有另一个表CustomerData2
(稍后构建),其中包含以下字段:
_countId, customerFID, customerFirstName, customerLocation, _someOtherRandomFlags.
在上面的两个表之间,我知道一个事实,customerName
andcustomerFirstName
用于存储相同的数据,并且类似地customerLocation
,andcustomerAddress
也用于存储相同的数据。
可以说,一些销售团队一直在使用customerData
,而其他人一直在使用customerData2
. 我希望有一种可扩展的方式来检测表之间的冗余并报告它们。可以肯定地假设customerFID
两个表中的内容是一致的,并且指的是同一个客户。
我可以想到的一个解决方案是,在 python 中创建一个 customerData
类,将两个表中的记录映射到这个类,并为类中需要的对象计算哈希/签名(customerName, customerLocation/Address
)并将它们存储到签名表,其中包含以下列:
sourceTableName, entityType (customerData), identifyingKey (customerFID), signature
然后对于每个entityType
,我为每个寻找重复的签名customerFID
实际上,我正在处理大量的生物医学数据,有很多很多列。它们是由不同的人创建的(遗憾的是没有标准的命名法或结构),并且是存储在其中的重复数据
编辑: 为简单起见,我可以将所有数据库实例移动到单个服务器实例。