python - 检测不同结构表之间数据冗余的方法

标签 python mysql database duplicate-data redundancy

我正在处理一个涉及多个数据库实例的问题,每个实例都有不同的表结构。问题是,在这些表之间,有很多重复项,我需要一种方法来有效地找到它们、报告它们,并可能消除它们。

例如。我有两个表,第一个表,CustomerData 字段:

_countId, customerFID, customerName, customerAddress, _someRandomFlags

我还有另一个表,CustomerData2(稍后构建),其中包含以下字段:

_countId, customerFID, customerFirstName, customerLocation, _someOtherRandomFlags.

在上面的两个表中,我知道一个事实,customerNamecustomerFirstName用于存储相同的数据,同样customerLocationcustomerAddress 也用于存储相同的数据。

比方说,一些销售团队一直在使用 customerData,而其他人一直在使用 customerData2。我想要一种可扩展的方法来检测表之间的冗余并报告它们。可以肯定地假设两个表中的 customerFID 是一致的,并且指的是同一个客户。

我能想到的一个解决方案是,在 python 中创建一个 customerData 类,将两个表中的记录映射到这个类,并为类中的对象计算哈希/签名是必需的(customerName、customerLocation/Address)并将它们存储到签名表中,其中包含以下列:

sourceTableName, entityType (customerData), identifyingKey (customerFID), signature 

然后对于每个 entityType,我为每个 customerFID 寻找重复的签名

实际上,我正在处理大量的生物医学数据,其中有很多列。它们是由不同的人创建的(遗憾的是没有标准的命名法或结构)并且存储在其中的重复数据

编辑: 为简单起见,我可以将所有数据库实例移动到单个服务器实例。

最佳答案

如果我不关心性能,我会使用高级实用方法。使用 Django(或 SQLAlchemy 或...)构建您想要的模型(您的表)并获取数据进行比较。然后使用一种算法来有效地识别重复项(......从列表或字典中,这取决于你“如何”保存你的数据)。为了提高性能,您可以尝试使用多处理模块“增强”您的应用程序或考虑使用 map-reduce 解决方案。

关于python - 检测不同结构表之间数据冗余的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5865775/

相关文章:

MySQL Alter Table 使用通配符更改所有字段类型?

python - "gi"库代表什么?

mysql - 时间戳默认值与 current_timestamp 不同

php - 为什么要清理 POST 和 GET

mysql - 用于更新多行的 Table Values() 构造函数

javascript - Phonegap 等待数据库事务完成

sql - 动态枢轴sql

python - 如何在Python中引用列表中的字符串

python - geopandas df 中的形状点几何到纬度/经度列

python - 从架构中的每个表中获取所有单列