是否有比较存储在不同模式中的相同数据的技术?情况是这样的。如果我有一个带有模式A的数据库,它会存储5个表中的功能数据。模式A - >架构B在升级过程中完成。在升级过程中,应用了一些转换逻辑,数据存储在Schema B的7个表中。 我所追求的是一些验证数据完整性的方法,基本上我必须比较不同的模式,同时考虑转换逻辑。如果没有编写一些自定义的t-sql sproc来比较数据,是否有另一种方法?我倾向于python自动化这个,有没有任何python模块可以帮助我? 为了更好地说明我的问题,下图是我需要比较的众多数据集之一的粗略图片,属性1,2,3和4从模式源迁移到目标,但它们分布在不同的表中。 / p>
Table1Src Table1Dest
| |
--ID(Primary Key) --ID(Primary Key)
--Property1 --Property1
--Property2 --Property5
--Property3 --Property6
Table2Src Table2Dest
| |
--ID(Foreign Key->Table1Src) --ID(Foreign Key->Table1Dest)
--Property4 --Property2
--Property3
Table3Dest
|
--ID(Foreign Key->Table1Dest)
--Property4
--Property7
答案 0 :(得分:2)
在两个模式上创建“视图”,这些模式转换为数据的相同商务表示。将这些视图导出到平面文件,然后您可以使用任何普通的vanilla文件diff实用程序来比较和指出差异。
答案 1 :(得分:1)
基本上,您应该为两个模式版本创建对象表示,然后比较对象。如果它们全部同时适合记忆,则最好这样做;如果没有,你需要迭代一个表示中的所有对象,在另一个表示中获取相应的对象,比较它们,然后反过来。反之亦然。
困难的部分可能是获得对象表示;您可以看到SQLAlchemy是否可以方便地用于您的表格。原则上,SQLAlchemy能够将现有的模式定义映射到对象上。
答案 2 :(得分:0)
我已成功使用SQLAlchemy在一个模式和另一个模式之间进行迁移 - 这是一个类似的过程(如Martinv.Löwis所示)作为比较。特别是如果你使用.equals(其他)方法。