Как загрузить триггеры на сервер Teradata с помощью bteq

Мы переносим базу данных с Oracle на Teradata.

У нас есть .sql файлов с допустимым DDL триггера и .bteq файлов с .compile командами для этих триггеров. Но когда мы запускаем эти .bteq файлы, мы получаем ошибки, и триггер не загружается. Например, файл td_instrg1.sql содержит определение триггера:

CREATE TRIGGER TD_INSTRG1
AFTER INSERT
ON TD_EMPLOYEES
REFERENCING NEW AS X1
FOR EACH ROW
WHEN(X1.id is not null)
BEGIN ATOMIC
   (INSERT INTO TD_EMPLOYEES1     VALUES(X1.id, X1.name, X1.monthly_income);)
END;

а файл td_instrg1.bteq содержит следующие команды:

.logon vmdbsrv016/dbc, dbc;

DATABASE twm;

.compile FILE=td_instrg1.sql;

.logoff;

Подскажите, пожалуйста, как загрузить триггеры из скриптов с помощью утилиты bteq.


person MaterialGirl    schedule 14.06.2013    source источник
comment
Это недопустимый DDL для триггера Oracle; это для терадаты? Это может помочь кому-то, кто знает об этом больше, чем я, если вы покажете ошибки, которые вы получаете.   -  person Alex Poole    schedule 14.06.2013
comment
Алекс, большое спасибо за ответ.   -  person MaterialGirl    schedule 14.06.2013
comment
Синтаксис правильный, так как я загрузил этот триггер непосредственно из bteq и Teradata SQL Assistant. Дело в том, что нам нужно загрузить его из файла   -  person MaterialGirl    schedule 14.06.2013
comment
вот сообщение об ошибке Ошибки, сообщаемые во время компиляции -------------------------------------------------------- ---------------------------------- SPL1027:E(L25), отсутствует/неверный оператор SQL'E(7947 ): только создать/заменить p   -  person MaterialGirl    schedule 14.06.2013
comment
Пожалуйста, добавьте это к вопросу, это не работает как комментарий. Из того, что я вижу, кажется, что это поддерживает то, что @RobPaller сказал в своем ответе; если то, что он предложил, не решает проблему, вы должны прокомментировать это, сказав, почему, и если вы попробовали это, но все равно получили ошибку, покажите файл и новое сообщение об ошибке в своем вопросе. (Я ничего не знаю о Терадате!)   -  person Alex Poole    schedule 14.06.2013
comment
Если Роб решил вашу проблему, не забудьте проголосовать и принять ответ. Спасибо.   -  person Alex Poole    schedule 14.06.2013


Ответы (1)


Команда .COMPILE в BTEQ зарезервирована для компиляции хранимых процедур Teradata. Ваши операторы DDL для триггеров могут выполняться напрямую. Если у вас есть отдельные файлы, содержащие DDL, вы можете ссылаться на них из BTEQ с помощью команды .RUN:

.logon vmdbsrv016/dbc, {password};

DATABASE twm;

.RUN FILE=td_instrg1.sql;

.logoff;
person Rob Paller    schedule 14.06.2013
comment
Роб, спасибо большое!!!! Похоже, это действительно работает с командой .RUN. Большое спасибо! - person MaterialGirl; 14.06.2013