Czy próbowałeś z anonymous code block
? Poniższy blok kodu wybiera wszystkie tabele ze schematu public
należący do użytkownika postgres
i ustaw własność na użytkownika 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;
$$;
Pamiętaj, że ta operacja zmodyfikuje własność wszystkich tabel w twoim schemacie, który należy do danego użytkownika. Oczywiście możesz dalej filtrować te tabele, zmieniając pg_tables
zapytanie w pętli. Spójrz na:
SELECT * FROM pg_tables WHERE schemaname = 'public' AND tableowner = 'postgres';
Używaj go ostrożnie!
EDYTUJ :Aby odfiltrować kilka tabel z powyższego wyboru, dodaj NOT IN
, na przykład:
SELECT * FROM pg_tables
WHERE schemaname = 'public' AND tableowner = 'postgres'
AND tablename NOT IN ('table1','table2','table3')