30

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

4

3 に答える 3

67

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

$ 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:の出力を使用して、そのテーブルだけを復元できます。pg:credentials

$ psql "[pasted postgres:// from pg:credentials:url of staging app]" < table.dump
SET
SET
...
...
...
...
$ 
于 2013-04-22T16:00:28.937 に答える
4

@catsbysの回答

ポートも追加する必要がありました

pg_dump --no-acl --no-owner -h [ホスト IP].compute-1.amazonaws.com -p [ポート] -U [ユーザー名] -t [テーブル名] --data-only [データベース名] ] > table.dump

于 2014-03-17T20:49:12.510 に答える