PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como alterar a propriedade de algumas tabelas dentro de um banco de dados do postgres para outro usuário?


Você já tentou com um anonymous code block ? Este bloco de código abaixo seleciona todas as tabelas do esquema public que pertence ao usuário postgres e defina a propriedade para o usuário 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; 
$$;

Lembre-se de que esta operação modificará a propriedade de todas as tabelas em seu esquema que pertence ao usuário fornecido. Obviamente, você pode filtrar ainda mais essas tabelas alterando o pg_tables consulta no loop. Dê uma olhada em:
SELECT * FROM pg_tables WHERE schemaname = 'public' AND tableowner = 'postgres';

Use-o com cuidado!

EDITAR :Para filtrar algumas tabelas da seleção acima, adicione um NOT IN , como:
SELECT * FROM pg_tables 
WHERE schemaname = 'public' AND tableowner = 'postgres'
AND tablename NOT IN ('table1','table2','table3')