作为数据回归和质量保证练习的一部分,我需要在两个表之间寻找差异,理想情况下应该几乎相同。我看过很多商业产品,似乎找不到满足我们所有要求的产品:
必须能够非常有效地比较LARGE表(1000万行,200列)
必须在不同的数据库服务器和不同的数据库供应商(Oracle与DB2)之间工作
必须能够比较具有不同结构的表,忽略两个表之间未共享的列
必须使用用户提供的多列主键 - 不能依赖于DB中定义的键
必须在linux / solaris上运行。将作为在企业环境中执行的完全自动化流程的一部分运行。
必须能够无头(无GUI)
必须生成标识行差异(仅在一侧的行)和值差异的格式化报告
客户愿意为正确的解决方案支付企业级价格。换句话说,价格没有对象。
有没有人见过这样的东西?
答案 0 :(得分:2)
我会根据您定义的标准对数据库行进行散列,然后使用它。如果比较详细信息是相当静态的,您可能希望将哈希值保留为表本身的新列或单独的专用表。然后,适当的索引将允许您执行您希望的任何比较。
答案 1 :(得分:2)
不是最好的解决方案,但为了灵活性,我们将其实现为一组perl脚本,提取数据然后进行文件比较。
大多数商业数据库都具有出色的批量复制实用程序(bcp,sqlload等),并且Perl可以快速进行字符串比较并用于扩展大型文件。
答案 2 :(得分:0)
通过看看,不知道它是否相关 "Diffing" objects from a relational database