2014-10-03 4 views
0

У меня есть база данных, в которой в SIT используется около 600 таблиц. Когда мы переходим на UAT, мне нужно сравнить DDL таблиц (имена столбцов, типы данных, размер) в SIT, которые отличаются от DDL в UAT. Я размышляю над следующими подходами. (У меня нет пространства PERM) Я предпочитаю делать это в базе данных, а не экспортировать данные и сравнивать через unix.Сравнение DDL таблиц на разных серверах - Teradata,

ПЕРВЫЙ ПОДХОД:

create volatile table SIT (s_tablename varchar(30), s_ddl varchar(30000)) on commit preserve rows; 
create volatile table UAT (u_tablename varchar(30), u_ddl varchar(30000)) on commit preserve rows; 
DATABASE SIT; 

Как я могу генерировать DDL из вышеперечисленных с оператором выбора для вставки в указанном выше значения?

1 SELECT 'SHOW TABLE ' || TRIM(TABLENAME) from dbc.tables where databasename='SIT' and tablekind='T' order by tablename; 

Если я могу иметь равнодействующая SHOW TABLE, т.е., DDL вместе с именем таблицы, я мог бы запустить прямую вставку выбрать в таблицу SIT (что-то вроде ниже)

insert into SIT select trim(tablename <DDL_OF_TABLE> from dbc.tables where databasename='SIT' and tablekind='T' 

и в UAT так, чтобы я мог ПОЛНОСТЬЮ ПРИСОЕДИНИТЬ их, как показано ниже, чтобы узнать различия.

select sit.s_tablename, uat.u_tablename from sit left join uat on sit.s_tablename = uat.u_tablename and sit.s_ddl=uat.u_ddl where uat.u_tablename is NULL; 

Второй подход:

выбрать все данные столбца из dbc.columns, как показано ниже от обоих сидят и UAT и сравнить их в Excel лист (SIT, УАТ находятся в 2-х разных серверов).

SEL TABLENAME, COLUMNNAME, COLUMNFORMAT, COLUMNTYYPE, COLUMNLENGTH, NULLABLE, DECIMALTOTALDIGITS, DECIMALFRACTIONALDIGITS FROM DBC.COLUMNS WHERE DATABASENAME='SIT'ORDER BY TABLENAME, COLUMNNAME 

2а) -

В результирующей это огромные (187000 строк - около 600 таблиц), лист Excel принимает очень много времени, чтобы сравнить и дать равнодействующую. Я мог бы разбить вышеуказанный запрос на куски и сравнить его. Тем не менее, я пытаюсь добиться этого в одной части.

2b) -

еще один вариант, чтобы импортировать выше выберите равнодействующую в изменчивые таблицы через помощник SQL (я не имею доступ для запуска утилиты) и делать операцию минуса, как показано ниже.

sel * from SIT minus sel * from UAT; 

Однако, я чувствую, что это время процесса загрузки потребляя около 187000 строк в 2 летучие таблицы через импорт SQL помощника. Кроме того, я должен преодолеть нулевую обработку с помощью zeroifnull или какой-либо другой функции во время вышеперечисленного select над dbc.columns, чтобы избежать дальнейших проблем, если это так.

Не могли бы вы рассказать о плюсах и минусах обоих подходов или более приемлемого решения?

ответ

0

Teradata Студия 15.00

возможная замена Teradata для нынешнего президента SQL Assistant теперь предлагает сравнения объектов мастера для сравнения объектов между одинаковыми или различными базами данных Teradata. Он помещает объект DDL бок о бок в Редактор Compare и выделяет различия. Это можно бесплатно загрузить из Teradata's Developer Exchange.(Требуется регистрация - бесплатно)

Третья партия Schema Compare Инструменты

Есть производители, которые предлагают IDE инструменты с возможностью выполнения сравнения схем в средах баз данных. Некоторые предлагают бесплатные периоды оценки для своих инструментов, в то время как другие требуют, чтобы вы лицензирули продукт спереди. AquaFold и AtanaSuite - это два варианта, которые приходят на ум.

BTEQ Экспорт SHOW TABLE Выходные

можно программировать SHOW TABLE Вывод для экспорта в плоский файл для СИТ и ЕСХН. С помощью плоских файлов вы можете использовать такой инструмент, как Notepad ++ (текстовый редактор с открытым исходным кодом Windows), который предлагает возможность сравнить два файла и выделить различия. Это может быть лучшим вариантом, чем первые два, которые могут быть не столь дружелюбными, когда дело доходит до обработки большого объема объектов, которые необходимо сравнить.

Еще один вариант, если вы разбираетесь в сценариях UNIX (sed, awk, регулярных выражениях), вы, вероятно, можете скриптовать что-то, чтобы выполнить сравнение для вас. Ваш пробег может варьироваться в зависимости от этого параметра в зависимости от того, насколько вы основательны в своих сценариях.

Реализовать Лучше управления версиями Процессы

Что-то, что я думаю, что многие магазины могут сделать лучшую работу обработки, особенно по мере усложнения их предприятие увеличивается среды передачи данных. Проблема заключается в том, что многие из инженеров программного обеспечения, на которые они полагаются, не так дружелюбны, когда дело касается изменений DDL в базе данных. Вы обнаружите, что есть продукты для некоторых из наиболее известных сред, таких как SQL Server и Oracle. Меньше для Терадаты. Инструменты в стороне от этого, вероятно, больше связаны с процессом, связанным с управлением выпуском во многих магазинах.

Надеюсь, это поможет.

Смежные вопросы