我目前正在执行回归测试,并想编写一个查询,该查询会自动比较两个表之间的列中的值。希望将来也能自动执行此功能。
基本上检查每个单元格。
我们目前使用的是基于 Oracle 和 MSSQL 的环境。
例如
Table A:
Column 1 | Column 2 | Column 3
540 EQUITY 10-09-12
Table B:
Column 1 | Column 2 | Column 3
330 CASH 10-03-11
帮助将不胜感激。
我们的测试人员发现对此类比较有用的最简单的查询之一是使用 MINUS
运算符。
SELECT COUNT(*)
FROM ((SELECT *
FROM tableA
MINUS
SELECT *
FROM tableB)
UNION ALL
(SELECT *
FROM tableB
MINUS
SELECT *
FROM tableA)) ;
这告诉您有多少行在TableA
中,而不是在TableB
中,在TableB
中,而不是在TableA
中。如果两个表具有相同的结构,并且您尝试仅比较值,则此方法有效。
您可以编写一个动态 PL/SQL 块,用于检查需要在循环中比较的所有表的此计数并生成报告。
您还可以在 Toad
和 SQL Developer
中找到比较实用程序,它们也比较表结构。例如:- 如果列 A 在表 A 中,在表B 中缺失等,您可以生成报告。
如果表格大小较小,您还可以使用外部文本比较工具,例如 Beyond 比较或 Winmerge。