2017-03-24 27 views
3

私はこれを初心者です。私はHerokuがホストしているPostgreSQLデータベースでクエリを実行するためにコマンドラインから実行できるスクリプトを書いています。私がどのように見える実行権限を持つスクリプトscript.shいるシェルスクリプトを使ってHeroku Postgresデータベースからデータを取得する

右:

echo "Starting pull from postgres ..." 
heroku pg:psql <db> --app <app-name> 
\copy (<query>) to 'file.csv' WITH CSV 
\q 
echo "Done!" 

echoheroku ...コマンドが正常に動作、しかし、Herokuのが起動したら、スクリプトは、もはやコマンドを注入していません。私が手動でHerokuアプリケーションを終了した後でのみ、最後の3行が注入されます。

これは、Herokuが開いたらpostgreSQLコマンドを入力することを意図したものではないが、これを行う方法があることを理解していますか?

私はそれがHerokuに接続して1行でクエリを送信するという意味があります。私はHeroku's documentationを検索しましたが、役立つものは何も見ませんでした。

答えて

2

あなたは、SQLを渡すために--commandフラグを使用することができ、サーバーベースのCOPYとともにheroku pg:psqlにコマンドし、その後、出力をファイルにリダイレクト:

echo "Starting pull from postgres ..." 
heroku pg:psql <db> --app <app-name> --command "COPY (<query>) TO STDOUT WITH CSV" > file.csv 
echo "Done!" 
+0

'PG:psql'は、インタラクティブなコマンドです。コマンドを直接入力する必要があります。 '--command'フラグは、自動的に実行されるコマンドを前もって提供することによってそれを変更します。 – VxJasonxV

関連する問題