比较Teradata中两个表的内容的最佳方法?

时间:2010-03-18 17:44:28

标签: sql teradata data-comparison

当您需要比较两个表以查看差异是什么时,是否有您使用的工具或快捷方式,或者您是否手动编码SQL以比较两个表?

基本上是Red Gate SQL Data Compare等产品的核心功能(我的表的模式通常总是匹配)。

背景:在我的SQL Server环境中,我创建了一个存储过程,它检查两个表/视图的元数据,创建一个查询(作为动态sql),它连接指定键列上的两个表,并比较数据比较列,报告关键差异和数据差异。可以打印和修改/复制查询,也可以按原样执行查询。不幸的是,我们不允许在Teradata环境中创建存储过程。

2 个答案:

答案 0 :(得分:1)

听起来像Talend's Open Profiler这样的数据分析工具在这一点上最有意义。

您可以编写一个BTEQ语句来构建类似于SQL Server存储过程的查询,然后导出动态构建的SQL。然后你可以在你的BTEQ中运行它。它可能会变得很麻烦,但如果有足够的决心,你可能会嘲笑它。

答案 1 :(得分:1)

我不知道这是你正在寻找的正确答案。

sel * from database_name1.table_name1
minus
sel * from database_name2.table_name2;

您可以通过选择特定列来执行相同操作。这将基本上给出table2中不存在的行,这些行位于table1中。

如果您没有寻找此类答案,请忽略此问题并继续。

您也可以选择以下内容。

select 
table1.keycol1,
table2.keycol2,
(table1.factcol1 - table2.factcol2) as diff
from table1
inner join 
table2
on table1.keycol1 = table2.keycol1
and table1.keycol2 = table2.keycol2
where diff <> 0

这只是一个可以提供想法的分析。请忽略任何语法和程序错误。 希望这会有所帮助。