Har du testat med ett anonymous code block
? Detta kodblock nedan väljer alla tabeller från schemat public
som tillhör användaren postgres
och ställ in äganderätten till användaren 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;
$$;
Tänk på att den här åtgärden kommer att ändra ägandet av alla tabeller i ditt schema som tillhör den givna användaren. Självklart kan du filtrera dessa tabeller ytterligare genom att ändra pg_tables
fråga i slingan. Ta en titt på:
SELECT * FROM pg_tables WHERE schemaname = 'public' AND tableowner = 'postgres';
Använd den med försiktighet!
REDIGERA :För att filtrera bort några tabeller från urvalet ovan lägg till en NOT IN
, till exempel:
SELECT * FROM pg_tables
WHERE schemaname = 'public' AND tableowner = 'postgres'
AND tablename NOT IN ('table1','table2','table3')