Table of Contents
MySQL の場合は MySQL: ダンプを保存せずにデータベースをコピー をご覧ください。
PostgreSQL のデータを移す際によくやるのは、 pg_dump
でダンプデータを取得・保存して、 psql
で流し込む方法です。
いちいちダンプファイルに保存するのも面倒なので、つなげてひとつのコマンドにしてみました。 ダンプファイルの保存は行いません。
パスワードなしの場合
データベースにはパスワードをつけていることがほとんどなのですが、まずは基本として確認しておきます。
パスワードがある場合
エクスポート元、インポート先のどちらかにパスワードがある場合
パスワードを聞かれた時に入力できるので、 必要に応じて -W
をつければ OK です。
エクスポート元、インポート先の両方にパスワードがある場合
-W
オプションをつけても、パスワードをうまく入力することができません(私はいい方法をみつけることができませんでした)。 そこで .pgpass
ファイル を使います。
.pgpass
.pgpass
にパスワードを記述してホームディレクトリに保存しておくと、 PostgreSQL 接続時 にパスワードを入力しなくても接続できるようになります。
.pgpass
には次のように記述します。
左から順に、ホスト名またはIPアドレス、ポート番号、データベース名、ユーザ名、パスワード を “:” で区切って記述します。 複数ある場合は複数行に記述します。
そしてアクセス権限を 600 にしておきます。 この場合のみ .pgpass
は有効になります。
.pgpass
を作ったら、 次のようにしてエクスポート・インポートを同時に行えるようになります。 -W
はつけません。
補足
pg_dump
に -C
オプション をつけると、 データベース作成のコマンドも出力してくれます。