用于验证迁移的SQL代码测试是否成功

时间:2013-11-18 21:02:27

标签: sql teradata

我有一个关于迁移后测试数据的问题。

我已经使用基本的测试查询来验证数据是否已成功迁移,但现在我再也想不到了。任何额外的建议将不胜感激。

以下是我目前使用的那些:

- 记录计数

SELECT COUNT(*) FROM table_name;

-Sum columns

SELECT SUM(column_name) FROM table_name;

- 检查Null

SELECT column_name FROM table_name
      WHERE column_name IS NULL

我正在检查源系统和目标系统中的输出结果是否相同。为了澄清,旧的源系统是不同数据库的混合体。 SQL Server 2005,2008和Sybase。目标方是Teradata。所有数据都转移到了Teradata。

2 个答案:

答案 0 :(得分:0)

您是否尝试过比较两张表以确保它们相同?我假设你说“源系统”和“目标系统”你有两个表。类似的东西:

SELECT * FROM t1 WHERE NOT EXISTS (SELECT * FROM t2 WHERE t2.column_name = t1.column_name)

或查找源表中但不存在于目标表中的记录,以及目标表中但不存在于源表中的记录:

SELECT * FROM (SELECT Id, column_name FROM t1, 'old'
UNION ALL
SELECT Id, column_name FROM t2, 'new') t
ORDER BY Id

代码会根据您使用的RDBMS而有所不同,但这些想法应该相同。

答案 1 :(得分:0)

您可以执行许多不同的操作,具体取决于您希望数据与“确切”匹配的确切程度。它还取决于某些系统如何处理NULL - 在oracle中,例如,空字符串是空字符串,而在SQL服务器中,''和NULL不等效。

如果您的DBMS在源和目标上都相同,那么您可以使用诸如(在SQL Server中)SUM(CHECKSUM(concatenation_of_my_fields))之类的技巧来了解您是否真的拥有相同的数据。

但是,你必须做出许多假设。您必须自己为迁移方案确定最佳测试用例。您已经列出了大多数通常已经完成的一般常规。

但是,迁移并不总是只是“将表a复制到表b”。对于更高级的案例,您需要与业务团队合作并确定所有真实的测试用例。