Лучший способ сравнить содержимое двух таблиц в Teradata? - PullRequest
0 голосов
/ 18 марта 2010

Когда вам нужно сравнить две таблицы, чтобы увидеть, в чем заключаются различия, есть ли какие-либо инструменты или ярлыки, которые вы используете, или вы вручную пишете SQL для сравнения двух таблиц?

В основном основные функциитакой продукт, как Red Gate SQL Data Compare (схемы для моих таблиц обычно всегда совпадают).

Справочная информация. В среде SQL Server я создал хранимую процедуру, которая проверяет метаданные двух таблиц / представлений, создает запрос(как динамический sql), который объединяет две таблицы в указанных ключевых столбцах и сравнивает данные в столбцах сравнения, сообщая о ключевых различиях и различиях данных.Запрос может быть либо распечатан и изменен / скопирован, либо просто выполнен как есть.К сожалению, нам не разрешено создавать хранимые процедуры в нашей среде Teradata.

Ответы [ 2 ]

1 голос
/ 06 мая 2010

Я не знаю, правильный ли это ответ, который вы ищете.

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

Это был просто анализ, который может дать идею. Пожалуйста, игнорируйте любые синтаксические и программные ошибки. Надеюсь, это поможет.

1 голос
/ 18 марта 2010

Похоже, инструмент для профилирования данных, такой как Открытый профиль Talend будет наиболее целесообразным в этой точке.

Вы можете написать инструкцию BTEQ, которая создает запрос, аналогичный хранимой процедуре SQL Server, а затем экспортировать динамически созданный SQL. Затем вы можете запустить его внутри своего BTEQ. Это может быть громоздким, но с достаточной решимостью вы, вероятно, сможете что-то смутить.

...