不同模式之间的数据比较技术

时间:2008-12-12 05:09:04

标签: python sql database

是否有比较存储在不同模式中的相同数据的技术?情况是这样的。如果我有一个带有模式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

3 个答案:

答案 0 :(得分:2)

在两个模式上创建“视图”,这些模式转换为数据的相同商务表示。将这些视图导出到平面文件,然后您可以使用任何普通的vanilla文件diff实用程序来比较和指出差异。

答案 1 :(得分:1)

基本上,您应该为两个模式版本创建对象表示,然后比较对象。如果它们全部同时适合记忆,则最好这样做;如果没有,你需要迭代一个表示中的所有对象,在另一个表示中获取相应的对象,比较它们,然后反过来。反之亦然。

困难的部分可能是获得对象表示;您可以看到SQLAlchemy是否可以方便地用于您的表格。原则上,SQLAlchemy能够将现有的模式定义映射到对象上。

答案 2 :(得分:0)

我已成功使用SQLAlchemy在一个模式和另一个模式之间进行迁移 - 这是一个类似的过程(如Martinv.Löwis所示)作为比较。特别是如果你使用.equals(其他)​​方法。