Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL代码测试以验证迁移是否成功_Sql_Teradata - Fatal编程技术网

SQL代码测试以验证迁移是否成功

SQL代码测试以验证迁移是否成功,sql,teradata,Sql,Teradata,我有一个关于迁移后测试数据的问题 我已经使用了基本的测试查询来验证数据是否已成功迁移,但现在我想不起来了。如有任何其他建议,将不胜感激 以下是我迄今为止使用过的: -记录计数 SELECT COUNT(*) FROM table_name; -和列 SELECT SUM(column_name) FROM table_name; -检查空值 SELECT column_name FROM table_name WHERE column_name IS NULL 我正在检查源系统

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

我已经使用了基本的测试查询来验证数据是否已成功迁移,但现在我想不起来了。如有任何其他建议,将不胜感激

以下是我迄今为止使用过的:

-记录计数

SELECT COUNT(*) FROM table_name;
-和列

SELECT SUM(column_name) FROM table_name;
-检查空值

SELECT column_name FROM table_name
      WHERE column_name IS NULL

我正在检查源系统和目标系统中的输出结果是否相同。澄清一下,旧的源系统是不同数据库的混合体。SQL server 20052008和Sybase。目标端是Teradata。所有数据都已转移到Teradata。

您是否尝试比较这两个表以确保它们相同?我假设当你说“源系统”和“目标系统”时,你有两个表。比如:

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的不同,代码会有所不同,但思路应该是相同的。

根据您希望数据“精确”匹配的程度,您可以做很多不同的事情。它还取决于某些系统如何处理NULL-例如,在oracle中,NULL字符串是空字符串,而在SQL server中,“”和NULL并不等价

如果您的DBMS在源和目标上都是相同的,那么您可以使用一些技巧,例如(在SQL Server中)
SUM(校验和(连接我的字段))
,以了解您是否真的拥有相同的数据

不过,你必须做出很多假设。您确实需要自己为迁移场景确定最佳测试用例。您已经列出了大多数通常已经完成的常规操作


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

当您说“已迁移”时,您的意思是迁移文件中有测试或样本数据吗?如果是这样,一般来说不是个好主意。请查看和发布的RailsCast剧集,了解有关这方面的一些信息。除此之外,我认为这个问题可能过于本地化,因为我们不知道您拥有什么样的数据,或者您想要查找什么样的内容。澄清一下,旧的源系统是不同数据库的混合体。SQL server 20052008和Sybase。目标端是Teradata。所有的数据都转移到了Teradata。为了澄清这一点,旧的源系统是不同数据库的混合体。SQL server 20052008和Sybase。目标端是Teradata。所有数据都已转移到Teradata。