2017-03-24 155 views
3

我是一個新手。我想寫一個腳本,我可以從命令行執行一個在Heroku託管的PostgreSQL數據庫上運行查詢。使用shell腳本從Heroku Postgres數據庫中獲取數據

右鍵我有可執行權限的腳本script.sh,看起來像:

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應用後,它纔會注入最後三行。

據我所知,這是一個bash腳本,一旦Heroku打開後不打算輸入postgreSQL命令,但有沒有辦法做到這一點?

我知道它可能涉及到連接到Heroku並在一行中提交查詢 - 我搜索了Heroku's documentation,但沒有看到任何有用的東西。

回答

2

可以使用--command傳遞國旗SQL沿命令heroku pg:psql的基於服務器的COPY然後將輸出重定向到一個文件:

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

相關問題