Passando Variáveis de Env para o Arquivo em Lote

1

Estou com dificuldades em transmitir um env var (declarado no meu .bash_profile ) para um script de arquivo em lote que executa uma operação BTEQ (no Teradata).

.bash_profile contém:

export DBPASSWORD='password'

O arquivo BATCH contém:

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

Eu verifiquei que ${DBPASSWORD} estava, de fato, sendo passado para o arquivo - mas ele NÃO está sendo aceito corretamente como a senha no script BTEQ que se parece com isso (a parte de logon é onde há um erro ):

.logon mydb/username,$4;

Nota: estou referenciando a senha ${DBPASSWORD} env var set por posição. Por favor, deixe-me saber se alguém poderia dar uma mão. Obrigado antecipadamente!

    
por sungoak 18.12.2015 / 07:49

1 resposta

0

Então eu descobri e é uma solução que funcionará geralmente, independentemente do comando real a ser executado no terminal. A maneira que fiz isso foi criar um arquivo de lote de "configuração" que executa vários comandos "echo" e os grava em um segundo arquivo a ser executado pelo BTEQ (no meu exemplo). Aqui está como eu resolvi isso (por favor, consulte o contexto no meu post 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 

Em seguida, basta executar o comando:

./bteq_execution_test_setup.bat

executará o comando (BTEQ neste caso) COM o env env var declarado em seu .bash_profile (ou .bashrc, .profile, etc). Espero que isso ajude alguém, eu vi um monte de gente perguntando sobre isso nos fóruns Teradata!

    
por 18.12.2015 / 18:47