1

У меня возникают трудности при передаче env var (объявленного в моем .bash_profile) в сценарий пакетного файла, который выполняет операцию BTEQ (в Teradata).

.bash_profile содержит:

export DBPASSWORD='password'

Пакетный файл содержит:

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

Я проверил, что ${DBPASSWORD} фактически передается в файл - но он НЕ принимается в качестве пароля в скрипте BTEQ, который выглядит примерно так (в части входа в систему возникает ошибка):

.logon mydb/username,$4;

Примечание: я ссылаюсь на ${DBPASSWORD} env var set password по позиции. Пожалуйста, дайте мне знать, если кто-нибудь может протянуть руку. Заранее спасибо!

1 ответ1

0

Так что я понял это, и это решение будет работать, как правило, независимо от фактической команды, выполняемой в терминале. Я сделал так, чтобы создать пакетный файл "setup", который запускает несколько команд "echo" и записывает их во второй файл, который будет выполнен BTEQ (в моем примере). Вот как я решил это (пожалуйста, обратитесь к контексту в моем оригинальном сообщении):

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 

Затем просто выполните команду:

./bteq_execution_test_setup.bat

выполнит команду (в данном случае BTEQ) с желаемой переменной env, объявленной в вашем .bash_profile (или .bashrc, .profile и т. д.). Надеюсь, это кому-нибудь поможет, я видел много людей, спрашивающих об этом на форумах Teradata!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .