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 스크립트를 사용하여 덤프를 수정하는 사람들이 있습니다. 그 해결책을 피하고 싶지만 대안이 없다면 취할 것입니다. 덤프의 데이터베이스 이름을 변경하는 스크립트를 작성하여 데이터를 변경하지 않은 사람이 있습니까?