比较2个SQL表中的数据

时间:2009-06-15 09:03:10

标签: sql database

作为数据回归和质量保证练习的一部分,我需要在两个表之间寻找差异,理想情况下应该几乎相同。我看过很多商业产品,似乎找不到满足我们所有要求的产品:

  • 必须能够非常有效地比较LARGE表(1000万行,200列)

  • 必须在不同的数据库服务器和不同的数据库供应商(Oracle与DB2)之间工作

  • 必须能够比较具有不同结构的表,忽略两个表之间未共享的列

  • 必须使用用户提供的多列主键 - 不能依赖于DB中定义的键

  • 必须在linux / solaris上运行。将作为在企业环境中执行的完全自动化流程的一部分运行。

  • 必须能够无头(无GUI)

  • 必须生成标识行差异(仅在一侧的行)和值差异的格式化报告

  • 客户愿意为正确的解决方案支付企业级价格。换句话说,价格没有对象。

有没有人见过这样的东西?

3 个答案:

答案 0 :(得分:2)

我会根据您定义的标准对数据库行进行散列,然后使用它。如果比较详细信息是相当静态的,您可能希望将哈希值保留为表本身的新列或单独的专用表。然后,适当的索引将允许您执行您希望的任何比较。

答案 1 :(得分:2)

不是最好的解决方案,但为了灵活性,我们将其实现为一组perl脚本,提取数据然后进行文件比较。

大多数商业数据库都具有出色的批量复制实用程序(bcp,sqlload等),并且Perl可以快速进行字符串比较并用于扩展大型文件。

答案 2 :(得分:0)

通过看看,不知道它是否相关 "Diffing" objects from a relational database