【问题标题】:Best way to compare contents of two tables in Teradata?比较 Teradata 中两个表的内容的最佳方法?
【发布时间】:2013-03-23 05:29:32
【问题描述】:

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

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

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

【问题讨论】:

    标签: sql teradata data-comparison


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      如果您不是在寻找此类答案,请忽略并继续。

      你也可以像下面这样选择。

      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
      

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

      【讨论】:

      • 谢谢 - 这是类似于我们在 SQL Server 上的工具生成的代码。
      猜你喜欢
      • 2021-07-02
      • 1970-01-01
      • 2015-11-14
      • 1970-01-01
      • 1970-01-01
      • 2018-04-03
      • 1970-01-01
      • 2015-08-21
      • 2019-12-21
      相关资源
      最近更新 更多