web-dev-qa-db-ja.com

HerokuのPostgresと単一のテーブルをダンプしてファイルをダンプする

HerokuでPostgresを使用しており、本番DBから1つのテーブルをダンプして、ステージングDBにダンプする必要があります。 herokuツールベルトをインストールしましたが、ステージングデータベースにインポートする単一のデータベーステーブルをダンプする方法がわかりません。

30
dennismonsewicz

次のように、データの単一のテーブルをダンプできます。

$ 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

そのファイルを使用すると、psqlConnection URL:output of ステージングアプリのpg:credentialsへの新しい呼び出しとともに使用して、そのテーブルだけを復元できます。

$ psql "[pasted postgres:// from pg:credentials:url of staging app]" < table.dump
SET
SET
...
...
...
...
$ 
65
catsby

@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

4
Nicolai

タップを見てください(db:pull)、あなたのユースケースは この回答済みの質問 でカバーされていると思います。

1
friism