PostgreSQLデータベースをエクスポートし、後で別の名前でインポートする方法はありますか?
RailsでPostgreSQLを使用しており、しばしば本番環境からデータをエクスポートします。データベースはblah_productionと呼ばれ、開発時またはステージング時にblah_developmentおよびblah_stagingという名前でインポートします。MySQLの場合、エクスポートにはどこにもデータベースがないため(コメントを除く場合があります)、これは簡単ですが、PostgreSQLでは不可能なようです。不可能ですか?
私は現在、この方法でデータベースをダンプしています:
pg_dump blah > blah.dump
-cまたは-Cオプションを使用していません。そのダンプには次のようなステートメントが含まれます。
COMMENT ON DATABASE blah IS 'blah';
ALTER TABLE public.checks OWNER TO blah;
ALTER TABLE public.users OWNER TO blah;
でインポートしようとすると
psql blah_devel < blah.dump
私は得る
WARNING: database "blah" does not exist
ERROR: role "blah" does not exist
たぶん、問題はデータベースではなく、役割でしょうか?
このようにダンプした場合:
pg_dump --format=c blah > blah.dump
そして、この方法でインポートしてみてください:
pg_restore -d blah_devel < tmp/blah.psql
私はこれらのエラーを受け取ります:
pg_restore: WARNING: database "blah" does not exist
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 1513; 1259 16435 TABLE checks blah
pg_restore: [archiver (db)] could not execute query: ERROR: role "blah" does not exist
Command was: ALTER TABLE public.checks OWNER TO blah;
pg_restore: [archiver (db)] Error from TOC entry 1509; 1259 16409 TABLE users blah
pg_restore: [archiver (db)] could not execute query: ERROR: role "blah" does not exist
Command was: ALTER TABLE public.users OWNER TO blah;
pg_restore: [archiver (db)] Error from TOC entry 1508; 1259 16407 SEQUENCE users_id_seq blah
pg_restore: [archiver (db)] could not execute query: ERROR: role "blah" does not exist
Command was: ALTER TABLE public.users_id_seq OWNER TO blah;
pg_restore: [archiver (db)] Error from TOC entry 1824; 0 0 ACL public postgres
pg_restore: [archiver (db)] could not execute query: ERROR: role "postgres" does not exist
Command was: REVOKE ALL ON SCHEMA public FROM postgres;
pg_restore: [archiver (db)] could not execute query: ERROR: role "postgres" does not exist
Command was: GRANT ALL ON SCHEMA public TO postgres;
WARNING: errors ignored on restore: 11
何か案は?
私は、sedスクリプトを使用してダンプを変更する人々を見てきました。私はその解決策を避けたいのですが、代替手段がなければそれを採用します。ダンプのデータベース名を変更するスクリプトを作成した人はいますか?