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

Teradata-在Unix Linux命令提示符下运行文件/脚本,unix,client,teradata,automated-deploy,Unix,Client,Teradata,Automated Deploy,我在Unix box上安装了客户端/TTU,用于Teradata 如果我这样做,它会起作用。其中,“…”是Teradata BTEQ正常输出,完成以下操作后,我将返回提示 $bteq …… .. . logon dbname/dbuser,dbpassword SELECT DATE, TIME; .LOGOFF; .QUIT; .. … $ 现在,假设我将以下几行放在一个名为“testtd.bteq的文件中 我现在想要的是。。。如何在Unix$提示符下运行此脚本(.bteq) 到目前为止,我

我在Unix box上安装了客户端/TTU,用于Teradata

如果我这样做,它会起作用。其中,“…”是Teradata BTEQ正常输出,完成以下操作后,我将返回提示

$bteq
……
..

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

$

现在,假设我将以下几行放在一个名为“testtd.bteq的文件中

我现在想要的是。。。如何在Unix$提示符下运行此脚本(.bteq)

到目前为止,我尝试了以下方法,但都不起作用,可能是我遗漏了什么:
1.bteqtesttd.log
2.bteq< .run/path/to/testtd.bteq
遗传密码器

有什么想法吗?如果使用herdocument方式,是否必须首先提供“.logon dbname/dbuser,dbpassword”

在$prompt上运行bteq命令甚至不会像其他命令一样给我任何可以使用的帮助/选项

i、 e。
cmd-u用户-p密码-f文件等

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

我想通过导出一个名为“dbpassword”的变量来实现同样的功能

i、 e

$export dbpassword=XYXYX


然后,在脚本文件中,我可以使用“$dbpassword”。。。在登录命令中。。不知何故,export并不是在.bteq logon命令中导出var。

我所知道的最佳实践是

  • 将teradata凭据存储在
    ~/.tdlogon
    文件中
  • 创建一个脚本,其中包含您的
    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
    
    /*定义辅助变量,例如*/
    导出ARCHIVEDIR=~/data
    导出数据文件=dataOutput1.txt
    
    bteq是的,我想你会在某个地方有你的登录凭证。这是没有办法的。用钥匙代替是正确的解决方案,但我不知道你的
    bteq
    是否有这样的能力。我也这么认为。如果我在shell脚本中并执行以下操作,则herdoc方法可以工作:bteq似乎需要将.bteq文件调整为虚拟运行时文件,并替换关键字“$dbpassword”使用真实密码值,然后传递该值,而不是实际的.bteq,然后删除该虚拟文件。我建议在主文件夹中保留一个包含用户名和密码的
    .tdlogon
    文件,其中包含以下内容:
    .logon databaseName/username,password
    ,您可以使用
    启动
    bteq
    代码。运行文件=$HOME/.tdlogon
    即可登录。
    /* 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