大規模なデータベースを移動するためにpg_dump
/pg_restore
duoを使用する方法については、少し不明確です。
これは、データベースをダンプするために使用するコマンドです(ホストとユーザー名は環境変数から取得されます)。
pg_dump --dbname=mydb --format=custom > mydb.dump
私はcustom
形式を使用しています。これは、ネットワーク経由でこれを行い、圧縮を使用したいためです。
私がそれを復元しようとすると、私はこれを試しました:
pg_restore --dbname=mydb --no-owner mydb.dump
しかし、私は得ます:
pg_restore: [archiver (db)] connection to database "mydb" failed: FATAL: database "mydb" does not exist
次に--create
オプションを試してみましたが、同じエラーメッセージが表示されます。
最後に、template1
を--dbname
オプションとして渡してみました。
pg_restore --dbname=template1 --no-owner --create mydb.dump
しかし、ここに私が得るものがあります:
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 2125; 1262 16395 DATABASE mydb mydbuser
pg_restore: [archiver (db)] could not execute query: ERROR: invalid locale name: "en_US.utf8"
Command was: CREATE DATABASE mydb WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'en_US.utf8' LC_CTYPE = 'en_US.utf8';
pg_restore: [archiver (db)] could not reconnect to database: FATAL: database "mydb" does not exist
ここで何が悪いのですか?
あなたがするとき
pg_restore --dbname=mydb --no-owner mydb.dump
まだ存在しないmydb
データベースに接続しようとしています。既存のものに接続し、--create
パラメータ:
pg_restore --dbname=existentdb --no-owner --create mydb.dump
http://www.postgresql.org/docs/current/static/app-pgrestore.html