【问题标题】:Techniques for data comparison between different schemas不同模式之间的数据比较技术
【发布时间】:2008-12-12 05:09:04
【问题描述】:

是否有技术可以比较存储在不同模式中的相同数据?情况是这样的。如果我有一个带有模式 A 的数据库,并且它将某个功能的数据存储在 5 个表中。 Schema A -> Schema B 在升级过程中完成。在升级过程中,应用了一些转换逻辑,数据存储在 Schema B 的 7 个表中。 我追求的是某种验证数据完整性的方法,基本上我必须在考虑转换逻辑的同时比较不同的模式。缺少编写一些自定义 t-sql 存储过程来比较数据,是否有替代方法?我倾向于使用 python 来自动执行此操作,是否有任何 python 模块可以帮助我? 为了更好地说明我的问题,下图是我需要比较的众多数据集之一的粗略图片,属性 1、2、3 和 4 从模式源迁移到目标,但它们分布在不同的表中。

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

【问题讨论】:

  • 这在一定程度上取决于我们谈论的数据量,以及您的比较需要有多严格。数据的顺序基本一致吗? ID是否一致?您是否需要以严格的、依赖于数据类型的方式比较它们?所有这些问题都会影响战略。
  • 显示每个模式的基本图,以便我有一些想法?
  • 感谢您的回复,我有大约 10-15 次比较需要在 40-50 张桌子上进行。大多数比较具有一致的 ID,但在转换过程中,额外的数据将被添加到目标,我需要对其进行分类。没有必要进行严格的比较。
  • 我将发布一个基本架构图

标签: python sql database


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    基本上,您应该为两个模式版本创建对象表示,然后比较对象。如果它们都同时适合内存,则最好这样做;如果不是,则需要遍历一种表示中的所有对象,获取另一种表示中的对应对象,比较它们,然后反之亦然。

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

    【讨论】:

      【解决方案3】:

      我已经成功地使用 SQLAlchemy 在一个模式和另一个模式之间迁移 - 这是一个类似的过程(如 Martin v. Löwis 所示)作为比较。特别是如果您使用 .equals(other) 方法。

      【讨论】:

        猜你喜欢
        • 2010-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-07
        • 1970-01-01
        • 2023-03-06
        • 2017-10-23
        • 1970-01-01
        相关资源
        最近更新 更多