2011-08-17 48 views
0

假设:如何以编程方式比较2个表格?

  • 同样的查询是在两个表跑
  • 两个表都驻留在不同的模式
  • 数据库表5的一部分,或者可能是不一样的
  • 如果数据库是不同样,不能保证它们的版本或补丁级别
  • 数据的顺序在两个表中都是相同的。数据进行排序
  • 可能的是,一个表具有多个列,则其他
  • 可能的是,一个表具有多个行,则其他

我看到它有2个不同的challanges

  • 运行比较
  • 产生清晰的报告,概述了不同

不知下面的方法是有效的

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 
        ... 

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

回答

2

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

我与其他然后作为客户

1

嗯,借助像ORM这样的ORM,你可以比较你的实体(表)像正常的Java对象(我假设你在这里使用Java)。

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

1

忽略的行的差异列数和号码红色栅极没有连接,是应该表示相同的实体的数据?

如果是这样,我开始大和工作,我的一路下滑:

  1. 找出哪些列均表所示。
  2. 查找或定义表格的关键字。
  3. 使用各种连接运行几个SQL查询来说哪些行在两个表中,哪些行在哪些表中缺失,等等。