2016-12-02 10 views
0

У меня есть сценарий ожидания, который загружает данные из базы данных postgres heroku в локальный CSV-файл. Мне нужно использовать ожидание из-за необходимости автоматизации и ввода пароля. До сих пор мой сценарий выглядит следующим образом:Ожидайте, что скрипт слишком быстро работает при попытке загрузить данные из базы данных

#!/usr/bin/expect 
spawn psql -h <host> -p <port> -U <username> -W <db name> -t -A -F "," -f sql.sql -o output.csv 
expect "Password for user <db name>: " 
send "<password>\r" 
sleep 10 

sql.sql является SQL-запрос, например select * from my_table. Обратите внимание, что мне нужно добавить спать в конце сценария ожидания, чтобы данные записывались в CSV-файл, иначе ничего не записывается. Однако, если данные, которые я пытаюсь загрузить, слишком велики, мне придется постоянно корректировать время сна каждый раз. Как мне избежать этого?

ответ

0

Чтобы избежать регулировки сна для разных запросов, просто добавьте глобальный тайм-аут в сценарий ожидания.

set timeout -1 

так что ваш сценарий будет что-то вроде этого: -

#!/usr/bin/expect 

set timeout -1 
spawn psql -h <host> -p <port> -U <username> -W <db name> -t -A -F "," -f sql.sql -o output.csv 
expect "Password for user <db name>: " 
send "<password>\r" 
#sleep 10 

Надеется, что это помогает.

 Смежные вопросы

  • Нет связанных вопросов^_^