Hai provato con un anonymous code block
? Questo blocco di codice di seguito seleziona tutte le tabelle dallo schema public
che appartiene all'utente postgres
e imposta la proprietà sull'utente 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;
$$;
Tieni presente che questa operazione modificherà la proprietà di tutte le tabelle nel tuo schema che appartiene all'utente specificato. Ovviamente puoi filtrare ulteriormente queste tabelle modificando pg_tables
interrogazione nel ciclo. Dai un'occhiata a:
SELECT * FROM pg_tables WHERE schemaname = 'public' AND tableowner = 'postgres';
Usalo con cura!
MODIFICA :Per filtrare alcune tabelle dalla selezione sopra aggiungi un NOT IN
, come:
SELECT * FROM pg_tables
WHERE schemaname = 'public' AND tableowner = 'postgres'
AND tablename NOT IN ('table1','table2','table3')