Teradata - 在Unix上运行文件/脚本Linux命令提示符

问题描述:

我在Teradata的Unix机箱上安装了客户端/ TTU。Teradata - 在Unix上运行文件/脚本Linux命令提示符

如果我做了以下工作,它的工作原理。其中“...”是Teradata BTEQ正常输出,一旦完成以下操作,我回到提示符处。

$ BTEQ
...
....

. logon dbname/dbuser,dbpassword 
SELECT DATE, TIME; 
.LOGOFF; 
.QUIT; 

..
...
$

现在,可以说我把以下文件中的行称为“testtd.bteq

. logon dbname/dbuser,$dbpassword 
SELECT DATE, TIME; 
.LOGOFF; 
.QUIT; 

我现在想要的是......我怎么能运行该脚本(.bteq)在Unix的$提示符???

我尝试以下方法,到目前为止,但他们没有工作,可能是我在想念着什么:
1. BTEQ < /path/to/testtd.bteq> testtd.log

2. BTEQ < .run /path/to/testtd.bteq
HereDocEndsHere

任何想法?我必须提供“.logon dbname/dbuser,dbpassword”第一,如果我使用HereDocument的方式?

在$提示符下运行bteq命令甚至不会给我任何帮助/我可以使用的选项,就像其他命令一样。

即 CMD -u用户-p密码-f文件等等

PS - 它通过方法1的工作 - 当我硬编码在登录命令脚本文件的密码。

我想通过出口被称为 “DBPASSWORD”

$出口DBPASSWORD = xyxyxyxyx

然后,该脚本文件里面,我可以变做同样的在LOGON命令中使用“$ dbpassword”...以某种方式导出不会在.bteq logon命令内导出var。

+0

是的,我猜你会有你的登录凭据的地方。周围没有任何工作。使用键代替是正确的解决方案,但我不知道你的'bteq'是否能够这样做。 – Alfe 2013-05-08 21:49:11

+0

我也觉得。 HereDoc的方式工作,如果我在我的shell脚本中,并执行以下操作:bteq 2013-05-08 22:03:49

+0

似乎我需要将.bteq文件调整为虚拟运行时文件,并用真正的密码值替换关键字“$ dbpassword”,然后通过该代替实际的.bteq,然后删除该虚拟文件。 – 2013-05-08 22:05:36

最佳实践我所知道的是

  1. 存放在~/.tdlogon文件
  2. 您的Teradata凭据创建一个包含您的通话bteq与它所需要的所有东西的脚本。

例如,,创建一个文件bteqScript.sh

/* define helper variables, e.g.... */ 
export ARCHIVEDIR=~/data 
export DATAFILE=dataOutput1.txt 
bteq <<EOF 
.run file=$HOME/.tdlogon 
.export data file=${ARCHIVEDIR}|${DATAFILE} 
/* sql code on next line(s) */ 
select 
    'foo' as "bar" 
; 
.export reset 
EOF 

注意.run file=...执行与您的凭据,存储在别处的.logon命令。

对bteq脚本的荣誉为Alex Hasha