0

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

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

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

4

2 回答 2

1

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

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

于 2010-03-18T19:47:02.713 回答
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

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

于 2010-05-06T13:37:52.027 回答