2016-12-02 1 views
0

heroku postgresデータベースからローカルの.csvファイルにデータを読み込むexpectスクリプトがあります。私は、自動化とパスワードの入力の必要性から期待を使用する必要があります。これまでのところ、私のスクリプトは次のようになります。DBからデータを読み込もうとすると予想スクリプトが速すぎる

#!/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は、たとえばselect * from my_tableのために、SQLクエリです。 データが.csvファイルに書き込まれるようにするには、expectスクリプトの最後にsleepを追加する必要があります。それ以外の場合は何も書き込まれません。しかし、私がロードしようとしているデータが大きすぎる場合は、毎回スリープ時間を調整し続ける必要があります。これを避けるにはどうすればいいですか?

答えて

0

異なるクエリでスリープを調整しないようにするには、expectスクリプトでグローバルタイムアウトを追加するだけです。

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 

はそれがお役に立てば幸いです。

関連する問題