web-dev-qa-db-ja.com

Postgresql-データベースをバックアップし、異なる所有者で復元しますか?

次のコマンドを使用して、別のサーバー上のデータベースにバックアップを作成しましたが、必要な役割とは異なります。

pg_dump -Fc db_name -f db_name.dump

次に、データベースを復元する必要がある別のサーバーにバックアップをコピーしましたが、そのデータベースに使用されたそのような所有者はいません。データベースの所有者はowner1ですが、別のサーバーではowner2しか持っていないため、そのデータベースを復元して所有者を変更する必要があります。

復元時に別のサーバーで行ったこと:

createdb -p 5433 -T template0 db_name 
pg_restore -p 5433 --role=owner2 -d db_name db_name.dump

しかし、復元を実行すると、次のエラーが発生します。

pg_restore: [archiver (db)] could not execute query: ERROR:  role "owner1" does not exist

所有者を変更するように指定するにはどうすればよいですか?それとも不可能ですか?

59
Andrius

--no-ownerオプションを使用する必要があります。これにより、オブジェクトの所有権を元の所有者に設定しようとするpg_restoreが停止します。代わりに、オブジェクトは--roleで指定されたユーザーが所有します

createdb -p 5433 -T template0 db_name 
pg_restore -p 5433 --no-owner --role=owner2 -d db_name db_name.dump

pg_restore doc

91
Gary