anonymous code block
を試してみましたか
?以下のこのコードブロックは、スキーマpublic
からすべてのテーブルを選択します ユーザーpostgres
に属します 所有権をユーザーuser
に設定します :
DO $$
DECLARE row RECORD;
BEGIN
FOR row IN SELECT * FROM pg_tables
WHERE schemaname = 'public' AND tableowner = 'postgres' LOOP
EXECUTE FORMAT('ALTER TABLE %I.%I OWNER TO user',row.schemaname,row.tablename);
END LOOP;
END;
$$;
この操作により、すべてのテーブルの所有権が変更されることに注意してください。 指定されたユーザーに属するスキーマ内。明らかに、pg_tables
を変更することで、これらのテーブルをさらにフィルタリングできます。 ループ内のクエリ。ご覧ください:
SELECT * FROM pg_tables WHERE schemaname = 'public' AND tableowner = 'postgres';
注意して使用してください!
編集 :上記の選択からいくつかのテーブルを除外するには、NOT IN
を追加します 、例:
SELECT * FROM pg_tables
WHERE schemaname = 'public' AND tableowner = 'postgres'
AND tablename NOT IN ('table1','table2','table3')