代码之家  ›  专栏  ›  技术社区  ›  Cade Roux

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

  •  0
  • Cade Roux  · 技术社区  · 14 年前

    当您需要比较两个表以了解它们之间的区别时,您是否使用了任何工具或快捷方式,或者是否手工编写SQL代码以比较这两个表?

    基本上,像Red Gate SQL数据比较这样的产品的核心特性(我的表的模式通常总是匹配的)。

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

    2 回复  |  直到 11 年前
        1
  •  1
  •   Rob Paller    14 年前

    听起来像是一个数据分析工具,比如 Talend's Open Profiler 在那一点上最有意义。

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

        2
  •  1
  •   Enjoy coding    14 年前

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

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

    您可以通过选择特定的列来完成相同的操作。这基本上会给出表2中不存在的行,这些行在表1中。

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

    您也可以选择如下。

    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
    

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