Heb je het geprobeerd met een anonymous code block
? Dit codeblok hieronder selecteert alle tabellen uit het schema public
die toebehoort aan de gebruiker postgres
en stel het eigendom in op de gebruiker 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;
$$;
Houd er rekening mee dat deze bewerking het eigendom van alle tabellen zal wijzigen in uw schema dat bij de opgegeven gebruiker hoort. Uiteraard kunt u deze tabellen verder filteren door de pg_tables
vraag in de lus. Kijk eens naar:
SELECT * FROM pg_tables WHERE schemaname = 'public' AND tableowner = 'postgres';
Gebruik het met zorg!
BEWERKEN :Voeg een NOT IN
toe om een paar tabellen uit de selectie hierboven te filteren , zoals:
SELECT * FROM pg_tables
WHERE schemaname = 'public' AND tableowner = 'postgres'
AND tablename NOT IN ('table1','table2','table3')