2017-09-27 1 views
0

Nous avons des environnements DEV, UAT et PRD. Nous avons récemment créé 20 nouveaux schémas et 120 tables. Supposons que PO_DEV_SPD soit le nom de la base de données. J'ai créé des tables sous ce schéma. Maintenant, je veux utiliser la variable d'environnement au lieu du nom de base de données. Comme $ SPDDB.MY_ACCOUNT. Comment puis-je utiliser cette variable env lors de la création de table ainsi que dans la procédure stockée.Comment utiliser les variables d'environnement pour les noms de bases de données dans Teradata pour créer une table et des procédures stockées?

Mise à jour: Lors de la création DDLs

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

Puis-je utiliser la variable d'env à l'aide de scripts shell tout en créant DDLs/DML?

+0

Aucun nom de base de données dans 'CREATE TABLE' et' DATABASE DEV; 'avant d'exécuter le DDL? – dnoeth

+0

@dnoeth lors de la création des tables, nous mentionnons le qualifier.tablename. Ce qualificateur n'est rien d'autre que le nom de la base de données/nom de schéma dans mon cas. Maintenant, je veux utiliser le script shell pour créer des variables d'environnement et les utiliser lors de la création de DDL et de DML. – Nandan23

+0

Vous pouvez créer un script SQL dans le shell, puis le soumettre pour exécution via une application cliente. –

Répondre

0

Voici un exemple qui devrait vous orienter dans la bonne direction.

Les chemins vers BTQLOG et LOGON sont fictifs et ne représentent pas de bonnes pratiques. Remplacez les chemins appropriés pour votre environnement et les paramètres de sécurité appliqués par votre environnement.

#!/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