2017-09-27 14 views
0

私たちはDEV、UAT、およびPRD環境を持っています。私たちは最近、20の新しいスキーマと120のテーブルを作成しました。 PO_DEV_SPDがデータベース名であるとします。私はこのスキーマの下にテーブルを作成しました。今、データベース名の代わりに環境変数を使用したいと思います。 $ SPDDB.MY_ACCOUNTに似ています。このenv変数は、ストアドプロシージャと同様にテーブルを作成するときにどのように使用できますか。Teradataのデータベース名に環境変数を使用してテーブルとストアドプロシージャを作成する方法は?

更新:作成のDDL

CREATE MULTISET TABLE $SPDDB.tbl_employee 
(
name VARCHAR(20), 
id INT, 
roll_no INT 
) 
PRIMARY INDEX (id, roll_no) 

は私がのDDL /のDMLを作成中にシェルスクリプトを使用したenv変数を使用できますか?

+0

DDLを実行する前に、 'CREATE TABLE'と' DATABASE DEV; 'にデータベース名がありませんか? – dnoeth

+0

@dnoeth表を作成する際には、qualifier.tablenameと言います。私の場合、この修飾子はデータベース名/スキーマ名にすぎません。ここでは、シェルスクリプトを使用してenv変数を作成し、DDLとDMLを作成する際にそれらを使用したいと考えています。 – Nandan23

+0

シェル内にSQLスクリプトを作成し、クライアントアプリケーションを介して実行するためにSQLスクリプトを送信することができます。 –

答えて

0

ここでは正しい方向を指す例を示します。

へのパスBTQLOGLOGONのパスは架空のものであり、適切な方法ではありません。ご使用の環境に適したパスと、環境によって適用されるセキュリティー・パラメーターで置き換えてください。

#!/usr/bin/ksh 
SPDDB='PROD' 
BTQLOG='/var/opt/log/bteq.log' 
LOGON='/var/opt/logon/bteq.con' 
# 
bteq <<EOBTQ > $BTQLOG 2>&1 
.RUN file=${LOGON} 

CREATE MULTISET TABLE $SPDDB.tbl_employee 
(
name VARCHAR(20), 
id INT, 
roll_no INT 
) 
PRIMARY INDEX (id, roll_no); 

.QUIT ERRORLEVEL; 

EOBTQ 
# 
# 
STATUS=$? 
# 
exit $STATUS