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。
最佳实践我所知道的是
- 存放在
~/.tdlogon
文件 - 您的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。
是的,我猜你会有你的登录凭据的地方。周围没有任何工作。使用键代替是正确的解决方案,但我不知道你的'bteq'是否能够这样做。 – Alfe 2013-05-08 21:49:11
我也觉得。 HereDoc的方式工作,如果我在我的shell脚本中,并执行以下操作:bteq 2013-05-08 22:03:49
似乎我需要将.bteq文件调整为虚拟运行时文件,并用真正的密码值替换关键字“$ dbpassword”,然后通过该代替实际的.bteq,然后删除该虚拟文件。 – 2013-05-08 22:05:36