Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何以编程方式比较两个表?_Database_Comparison - Fatal编程技术网

Database 如何以编程方式比较两个表?

Database 如何以编程方式比较两个表?,database,comparison,Database,Comparison,假设: 在两个表上运行相同的查询 这两个表位于不同的模式中 数据库表是其中的一部分,可能相同,也可能不同 如果数据库不同,则无法保证其版本或修补程序级别 两个表中的数据顺序相同。数据已排序 一个表可能比另一个表有更多的列 一个表可能比另一个表有更多的行 在我看来,有两个截然不同的挑战 运行比较 制作清晰的报告,概述差异 我想知道下面的方法是否有效 If (table1 and table 2 have the same number of columns) For every ro

假设:

  • 在两个表上运行相同的查询
  • 这两个表位于不同的模式中
  • 数据库表是其中的一部分,可能相同,也可能不同
  • 如果数据库不同,则无法保证其版本或修补程序级别
  • 两个表中的数据顺序相同。数据已排序
  • 一个表可能比另一个表有更多的列
  • 一个表可能比另一个表有更多的行
在我看来,有两个截然不同的挑战

  • 运行比较
  • 制作清晰的报告,概述差异
我想知道下面的方法是否有效

If (table1 and table 2 have the same number of columns) 
  For every row found in table1 check 
     If that same identical row exists in table2
       And if it does not due to some column mismatch
          Find the closes match possible and report column differences
            If best match can be discovered, report column difference, else
               report can result is ambiguous
                  ...

这是否合理的做法?鉴于上面的一些假设,您能推荐一个替代方案吗?

Mmm,在类似hibernate的ORM的帮助下,您可以将您的实体(表)与普通java对象进行比较(我假设您在这里使用java)


也就是说,您可以编写一个涵盖所有假设的比较器。

嗯,在类似hibernate的ORM的帮助下,您可以像普通java对象一样比较实体(表)(我假设您在这里使用java)

也就是说,你可以编写一个涵盖你所有假设的比较器。

我的答案是使用。 它们有一个模式和一个数据比较工具,这些工具还允许您生成脚本,使一个数据库看起来像另一个数据库

我与red gate没有任何联系,但作为客户,我的答案是使用。 它们有一个模式和一个数据比较工具,这些工具还允许您生成脚本,使一个数据库看起来像另一个数据库


我与red gate没有任何联系,但作为客户

忽略列数和行数的差异,数据是否应该表示相同的实体

如果是这样的话,我会从大开始,一路走下去:

  • 找出两个表中的列
  • 查找或定义表的键
  • 使用各种联接运行一些SQL查询,以说明两个表中都有哪些行,哪些表中缺少哪些行,等等

  • 忽略列数和行数的差异,数据是否应该表示相同的实体

    如果是这样的话,我会从大开始,一路走下去:

  • 找出两个表中的列
  • 查找或定义表的键
  • 使用各种联接运行一些SQL查询,以说明两个表中都有哪些行,哪些表中缺少哪些行,等等