HerokuでPostgresを使用しており、本番DBから1つのテーブルをダンプして、ステージングDBにダンプする必要があります。 herokuツールベルトをインストールしましたが、ステージングデータベースにインポートする単一のデータベーステーブルをダンプする方法がわかりません。
次のように、データの単一のテーブルをダンプできます。
$ pg_dump --no-acl --no-owner -h [Host ip].compute-1.amazonaws.com -U [user name] -t [table name] --data-only [database name] > table.dump
これで必要なすべての値を取得できます。
$ heroku pg:credentials:url [DATABASE] -a [app_name]
Connection info string:
"dbname=[database name] Host=[Host ip].compute-1.amazonaws.com port=5432 user=[user name] password=[password] sslmode=require"
Connection URL:
postgres://[username]:[password]@[Host ip].compute-1.amazonaws.com:5432/[database name]
これにより、パスワードの入力を求められます。それを入力すると、ローカルドライブにファイルtable.dump
を取得するために進む必要があります。
ステージング時にテーブルを切り捨てたいと思うかもしれません。
$ echo "truncate [table];" | heroku pg:psql [DATABASE] -a staging_app
そのファイルを使用すると、psql
をConnection URL:
output of ステージングアプリのpg:credentials
への新しい呼び出しとともに使用して、そのテーブルだけを復元できます。
$ psql "[pasted postgres:// from pg:credentials:url of staging app]" < table.dump
SET
SET
...
...
...
...
$
@catsbysの回答
ポートも追加する必要がありました
pg_dump --no-acl --no-owner -h [Host ip] .compute-1.amazonaws.com -p [port] -U [user name] -t [table name] --data-only [database name ]> table.dump
タップを見てください(db:pull
)、あなたのユースケースは この回答済みの質問 でカバーされていると思います。