2010-03-18 2 views
0

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

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

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

ответ

1

Похоже, что инструмент профилирования данных, такой как Talend's Open Profiler, будет иметь наибольший смысл в этой точке.

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

1

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

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 

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

+0

Спасибо - это код, похожий на то, что генерирует наш инструмент на SQL Server. –