1. ホーム
  2. postgresql

[解決済み] PostgreSQLの場合。PostgreSQLですべてのテーブルのOWNERを同時に変更する

2022-03-21 18:34:21

質問

PostgreSQLデータベースのすべてのテーブルの所有者を変更するにはどうすればよいですか?

試しに ALTER TABLE * OWNER TO new_owner が、アスタリスクの構文に対応していない。

どのように解決するのですか?

参照 REASSIGN OWNED コマンド

注意事項 トライグビスのように は、以下の回答で言及しています。 は、その REASSIGN OWNED コマンドは少なくともバージョン8.2以降で利用可能で、より簡単な方法です。


すべてのテーブルの所有権を変更するので、おそらくビューとシーケンスも必要でしょう。 私がやったことは以下の通りです。

テーブル

for tbl in `psql -qAt -c "select tablename from pg_tables where schemaname = 'public';" YOUR_DB` ; do  psql -c "alter table \"$tbl\" owner to NEW_OWNER" YOUR_DB ; done

シークエンス

for tbl in `psql -qAt -c "select sequence_name from information_schema.sequences where sequence_schema = 'public';" YOUR_DB` ; do  psql -c "alter sequence \"$tbl\" owner to NEW_OWNER" YOUR_DB ; done

ビュー

for tbl in `psql -qAt -c "select table_name from information_schema.views where table_schema = 'public';" YOUR_DB` ; do  psql -c "alter view \"$tbl\" owner to NEW_OWNER" YOUR_DB ; done

あなたはおそらく DRY は、3つともalterステートメントが同じなので、少しアップします。