データベースを同じサーバの PostgreSQL へコピーするコマンド
-- データベースをコピー。db1(user1、password1) から db2(user2、password2)に
-- pg_dump -U user1 -W db1 | psql -U user2 -W db2 とすると
-- 「ERROR: ロール"user1"のメンバでなければなりません」や
-- 「WARNING: "public"の権限を取り上げられませんでした」の
-- メッセージが出るため、スーパーユーザーで実行することで回避
pg_dump -U postgres -W db1 | psql -U postgres -W db2
データベースを別のサーバの PostgreSQL へコピーするコマンド
データベースのコピーのコマンドの前に、次の内容のパスワードファイルを作成しておく必要があります。
- コピー元サーバで、pg_dump を実行するユーザのホームディレクトリに .pgpass ファイルを作成する
- コピー先サーバで、psql を実行するユーザのホームディレクトリに .pgpass ファイルを作成する
# hostname:port:database:username:password
localhost:5432:*:postgres:postgrespassword
実際の別サーバへのコピーは次のコマンドで行います。
-- 別サーバに PostgreSQL データベースをコピー。db1(user1、password1) から hostname サーバ(ユーザ名 hostuser)の db2(user2、password2)に
-- ただし、事前にパスワードファイルの設定が必要
pg_dump -U postgres db1 | ssh hostuser@hostname psql -U postgres db2