1 votes

Passage des variables Env au fichier Batch

J'ai des difficultés à faire passer une variable env (déclarée dans mon fichier .bash_profile ) à un fichier batch script qui exécute une opération BTEQ (dans Teradata).

.bash_profile contient :

export DBPASSWORD='password'

Le fichier BATCH contient :

bteq < bteq_execution_test.sql > bteq_execution_test.log 2>&1 ${DBPASSWORD}

J'ai vérifié que ${DBPASSWORD} a été, en fait, transmis dans le fichier - mais il n'est PAS correctement accepté comme mot de passe dans le BTEQ script qui ressemble à quelque chose comme ceci (la partie de connexion est où il ya une erreur) :

.logon mydb/username,$4;

Note : Je fais référence à la ${DBPASSWORD} env var définir mot de passe par position. Veuillez me faire savoir si quelqu'un peut m'aider. Merci d'avance !

0voto

JKubecki Points 401

J'ai donc trouvé une solution qui fonctionne généralement quelle que soit la commande à exécuter dans le terminal. J'ai créé un fichier batch "setup" qui exécute un certain nombre de commandes "echo" et les écrit dans un second fichier qui sera exécuté par BTEQ (dans mon exemple). Voici comment j'ai résolu le problème (veuillez vous référer au contexte dans mon message original) :

bteq_execution_test_setup.bat :

rm bteq_execution_test_setup1.bat
echo '.LOGON mydb/username,' ${DBPASSWORD} ';' > bteq_execution_test_setup1.bat
echo 'insert into mydb.mytable select top 10 feature1, feature2 from mydb.another_table;' >> bteq_execution_test_setup1.bat
echo '.LOGOFF;' >> bteq_execution_test_setup1.bat
echo '.EXIT;' >> bteq_execution_test_setup1.bat
bteq < bteq_execution_test_setup1.bat > bteq_execution_test_setup1.log 2>&1 

Ensuite, il suffit d'exécuter la commande :

./bteq_execution_test_setup.bat

exécutera la commande (BTEQ dans ce cas) AVEC la var env désirée déclarée dans votre .bash_profile (ou .bashrc, .profile, etc). J'espère que cela aidera quelqu'un, j'ai vu beaucoup de personnes poser des questions à ce sujet sur les forums Teradata !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X