0

我在 TERADATA 数据库上部署了一些 .bteq 和 .sql 脚本。为此,我在桌面上使用了一个名为 BTEQWin 版本 13.10.0.03 的客户端。

我从 pvcs/svn 等版本控制中获取 .bteq/.sql ,一旦文件位于我的工作区文件夹(来自版本控制工具)中,我所做的一切就是将文件从 Windows 浏览器拖放到 BTEQWin 客户端(我在拖放之前连接到数据库以运行这些脚本)。

现在,我必须在 UNIX 中自动化这整个过程。

我编写了一个 SHELL KSH/BASH 脚本,它从版本控制工具中的 TAG/LABEL 获取所有 .bteq/.sql 到给定的 UNIX 文件夹。现在,我需要做的就是将这些文件一个一个(我会处理订单)传递给 Teradata 客户端。

我的 ?- 我需要告诉 Unix 管理团队在 Unix 服务器上安装什么客户端 - 这样我就可以运行如下所示的内容:

someTeraDataCommand -u 用户名 -p 密码 -h 主机名 -d 数据库 -f 文件名执行 | tee output_filename.log

其中, someTeraDataCommand 是客户端/可执行文件 - 它可以让我运行 Teradata 脚本(就像我在桌面上使用 BTEQWin - GUI 会话一样)。其他参数可以是用户名、密码、在哪个服务器上连接哪个数据库以及要运行哪个文件,或者在命令行使用“<”运算符将该文件传递给命令。

任何想法?- 什么客户?

4

2 回答 2

1

假设在您的 UNIX 服务器上安装了完整的 Teradata 工具和实用程序包(它将具有与 Teradata 通信的连接工具),您应该可以bteq从命令行访问。像这样的东西:

bteq < script_file > output_file

您的脚本文件应包含.LOGON建立连接的语句:

.LOGON yourTDPID/your_account,your_pw

您可能还需要使用其他命令来设置默认数据库或非默认会话值。

于 2013-04-05T00:49:32.717 回答
0

另一种选择是在 Korn shell 脚本中组合 SQL 和对 BTEQ 的调用:

#!/usr/bin/ksh
##############
SHELL_NAME=`basename $0`
PRG_NAME=`basename $(SHELL_NAME} .ksh`
LOG_FILE=${PRG_NAME}.log
OUT_FILE=${PRG_NAME}.out
#
bteq <<EOBTQ > ${LOG_FILE} 2>$1

.LOGON {TDPID}/{USERID},{PWD};
--.RUN file=${LOGON}

/* Add your SQL/BTEQ commands here */

.QUIT 0;

EOBTQ

编辑

双连字符表示单行注释。通常在 UNIX 脚本中,您不会将密码保留在 KSH 脚本的纯文本中。.RUN 命令将引用包含该.LOGON {TPDID}/{USERID},{PWD};命令的勉强安全位置中的文本文件。

BTEQ 中的 .RUN 命令允许您引用另一个文本文件,其中包含您要在当前 BTEQ 脚本中运行的一系列有效 BTEQ 命令。

于 2013-04-05T14:10:22.450 回答