Как запланировать запрос Teradata в crontab? - PullRequest
0 голосов
/ 28 февраля 2019

Моя работа требует, чтобы я ежедневно обновлял определенные таблицы Teradata.Я наткнулся на crontab и пытался запланировать небольшой запрос Teradata.Ниже приведены коды:

Teradata:

DROP TABLE S_BNKFRD.PV_TEMP;
CREATE TABLE S_BNKFRD.PV_TEMP AS
(
SELECT
Current_Time AS Curr_Time
)WITH DATA;

Crontab:

* * * * * cd && . ./.profile;BTEQ -p /DATA/home/pverma3/CronTab_Test_Piyush.sql

Запрос Teradata находится в файле CronTab_Test_Piyush.sql в указанном месте, которое мне нужнозапускать каждую минуту (это был лишь маленький шаг к изучению того, как автоматизировать запросы teradata, прежде чем я настроил его для своих основных запросов).

Я погуглил, но не смог точно найти синтаксис crontab.Скорее я нашел людей, говорящих о BTEQ, поэтому попробовал.(Мой коллега запускает такой файл SAS, используя BGsas вместо BTEQ, но мы скоро избавляемся от SAS, поэтому я хотел сделать это с помощью Teradata)

Пожалуйста, помогите.Большое спасибо.

1 Ответ

0 голосов
/ 01 марта 2019

Я предпочитаю создать сценарий оболочки и в этом сценарии оболочки записать свой bteq как heredoc:

#!/bin/bash

bteqSYSTEM="your teradata domain name or ip"
bteqUSER="your teradata username"
bteqPWD="your teradata password"

bteq <<- BTEQSCRIPT 1> /DATA/home/pverma3/bteq_output.log
        .LOGON ${bteqSYSTEM}/${bteqUSER},${bteqPWD}
        DROP TABLE S_BNKFRD.PV_TEMP;
        CREATE TABLE S_BNKFRD.PV_TEMP AS
        (
        SELECT
        Current_Time AS Curr_Time
        )WITH DATA;
        .LOGOFF
        .QUIT
BTEQSCRIPT

. Он объединяет все необходимые биты в один файл, который легко вызывается из cron.:

#call my script every day at 1am
0 1 * * * /bin/bash /path/to/this/script.sh

Если вы хотите сохранить существующий файл SQL и ссылаться на него из скрипта bteq, вы можете сделать:

#!/bin/bash

bteqSYSTEM="your teradata domain name or ip"
bteqUSER="your teradata username"
bteqPWD="your teradata password"

bteq <<- BTEQSCRIPT 1> /DATA/home/pverma3/bteq_output.log
        .LOGON ${bteqSYSTEM}/${bteqUSER},${bteqPWD}
        .RUN FILE=/DATA/home/pverma3/CronTab_Test_Piyush.sql;
        .LOGOFF
        .QUIT
BTEQSCRIPT

Вы также можете рассмотреть возможность помещения этого sql в сохраненныйпроцедура, а затем просто вызов процедуры из вашего bteq.Таким образом вы сохраняете все sql вне командной строки, где его немного сложнее редактировать.

...