Zkusili jste to pomocí anonymous code block
? Tento blok kódu níže vybírá všechny tabulky ze schématu public
který patří uživateli postgres
a nastavte vlastnictví na uživatele 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;
$$;
Pamatujte, že tato operace změní vlastnictví všech tabulek ve vašem schématu, které patří danému uživateli. Tyto tabulky můžete samozřejmě dále filtrovat změnou pg_tables
dotaz ve smyčce. Podívejte se na:
SELECT * FROM pg_tables WHERE schemaname = 'public' AND tableowner = 'postgres';
Používejte jej opatrně!
UPRAVIT :Chcete-li z výše uvedeného výběru odfiltrovat několik tabulek, přidejte NOT IN
, například:
SELECT * FROM pg_tables
WHERE schemaname = 'public' AND tableowner = 'postgres'
AND tablename NOT IN ('table1','table2','table3')