如何在 crontab 中安排 Teradata 查询?
How to schedule a Teradata query in crontab?
我的工作要求我每天刷新某些 Teradata 表。我遇到了 crontab 并试图安排一个小的 Teradata 查询。以下是代码:
天睿数据:
DROP TABLE S_BNKFRD.PV_TEMP;
CREATE TABLE S_BNKFRD.PV_TEMP AS
(
SELECT
Current_Time AS Curr_Time
)WITH DATA;
定时任务表:
* * * * * cd && . ./.profile;BTEQ -p /DATA/home/pverma3/CronTab_Test_Piyush.sql
Teradata 查询位于给定位置的 CronTab_Test_Piyush.sql
文件中,我需要每分钟 运行 一次(这只是在我设置之前学习如何自动化 teradata 查询的一小步它适合我的主要查询)。
我用谷歌搜索但找不到准确的 crontab 语法。相反,我发现人们在谈论 BTEQ,所以试一试。 (我的同事正在 运行 使用 BGsas 代替 BTEQ 创建一个类似的 SAS 文件,但我们很快就会摆脱 SAS,所以我想使用 Teradata 来完成)
请帮忙。非常感谢你。
我更喜欢创建一个 shell 脚本,然后在那个 shell 脚本中,将我的 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 保留在命令行之外,这样编辑它会有点困难。
我的工作要求我每天刷新某些 Teradata 表。我遇到了 crontab 并试图安排一个小的 Teradata 查询。以下是代码:
天睿数据:
DROP TABLE S_BNKFRD.PV_TEMP;
CREATE TABLE S_BNKFRD.PV_TEMP AS
(
SELECT
Current_Time AS Curr_Time
)WITH DATA;
定时任务表:
* * * * * cd && . ./.profile;BTEQ -p /DATA/home/pverma3/CronTab_Test_Piyush.sql
Teradata 查询位于给定位置的 CronTab_Test_Piyush.sql
文件中,我需要每分钟 运行 一次(这只是在我设置之前学习如何自动化 teradata 查询的一小步它适合我的主要查询)。
我用谷歌搜索但找不到准确的 crontab 语法。相反,我发现人们在谈论 BTEQ,所以试一试。 (我的同事正在 运行 使用 BGsas 代替 BTEQ 创建一个类似的 SAS 文件,但我们很快就会摆脱 SAS,所以我想使用 Teradata 来完成)
请帮忙。非常感谢你。
我更喜欢创建一个 shell 脚本,然后在那个 shell 脚本中,将我的 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 保留在命令行之外,这样编辑它会有点困难。