LoginSignup
70
59

More than 5 years have passed since last update.

postgresのテーブルの所有者を一括で変更する

Posted at

postgresでデータベースの所有者を変更したいときにALTER DATABASE hoge OWNER TO new_userで行けるかと思ったのですが、database以下のtableもひとつずつ所有者を変更する必要があるみたいです。
テーブルが大量にある場合、ひとつずつALTER TABLE huga OWNER TO new_userをするのは大変!ということで、ぐぐったら下記のような解決策がでてきました。

下記を実行するとSQL文が発行されます。

SELECT
    'ALTER TABLE ' || schemaname 
    || '.' || tablename || 
    ' OWNER TO new_user;'
FROM pg_tables 
WHERE tableowner ='old_user'
 ALTER TABLE public.xxxxxxx OWNER TO xxxxxx;
 ALTER TABLE public.xxxxxxx OWNER TO xxxxxx;
 ALTER TABLE public.xxxxxxx OWNER TO xxxxxx;
 ALTER TABLE public.xxxxxxx OWNER TO xxxxxx;
 ALTER TABLE public.xxxxxxx OWNER TO xxxxxx;
 ALTER TABLE public.xxxxxxx OWNER TO xxxxxx;
 ALTER TABLE public.xxxxxxx OWNER TO xxxxxx;
 ALTER TABLE public.xxxxxxx OWNER TO xxxxxx;
…

あとはこれをコピーして実行すればok。
テーブルに紐づくスキーマの権限も同時に変更されました。

(参照:http://docolog.cocolog-nifty.com/papalog/2011/06/postgresql-8caf.html)

70
59
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
70
59