Haben Sie es mit einem anonymous code block
versucht
? Dieser Codeblock unten wählt alle Tabellen aus dem Schema public
aus die dem Benutzer postgres
gehört und setzen Sie den Besitz auf den Benutzer 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;
$$;
Denken Sie daran, dass dieser Vorgang den Besitz von allen Tabellen ändert in Ihrem Schema, das dem angegebenen Benutzer gehört. Natürlich können Sie diese Tabellen weiter filtern, indem Sie pg_tables
ändern Abfrage in der Schleife. Schauen Sie sich an:
SELECT * FROM pg_tables WHERE schemaname = 'public' AND tableowner = 'postgres';
Verwenden Sie es mit Vorsicht!
BEARBEITEN :Um ein paar Tabellen aus der obigen Auswahl herauszufiltern, fügen Sie einen NOT IN
hinzu , wie zum Beispiel:
SELECT * FROM pg_tables
WHERE schemaname = 'public' AND tableowner = 'postgres'
AND tablename NOT IN ('table1','table2','table3')