PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come modificare la proprietà di alcune tabelle all'interno di un database da postgres a un altro utente?

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')