1

Teradata の Unix ボックスにクライアント/TTU をインストールしました。

次のようにするとうまくいきます。ここで、「...」は 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 $プロンプトで実行できますか???

これまでに次の方法を試しましたが、うまくいきませんでした。何か不足している可能性があり
ます

。 bteq
HereDocEndsHere

何か案は?HereDocument の方法を使用している場合、最初に ".logon dbname/dbuser,dbpassword" を指定する必要がありますか?

$プロンプトでbteqコマンドを実行しても、他のコマンドと同様に、使用できるHELP/オプションさえ提供されません。

つまり、cmd -u user -p password -f file など...

4

2 に答える 2

2

私が知っているベストプラクティスは

  1. Teradata 資格情報を~/.tdlogonファイルに保存する
  2. 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 に感謝します。

于 2014-09-23T00:07:49.550 に答える
0

PS - 方法 1 で動作します。LOGON コマンドのスクリプト ファイルにパスワードをハードコーディングした場合です。

「dbpassword」という変数をエクスポートして同じことをしたかった

すなわち

$ export dbpassword=xyxyxyxyx

次に、スクリプトファイル内で、「$ dbpassword」を使用できます... LOGONコマンドで..どういうわけか、エクスポートは.bteqログオンコマンド内でvarをエクスポートしていません。

于 2013-05-08T21:25:24.257 に答える