PostgreSQL

Gerando o DDL de todas as views de um esquema no PostgreSQL

Atendendo a pedidos, segue um formato fácil para gerar um DDL de todas as views de um esquema específico no PostgreSQL. Na verdade está tudo pronto em pg_views, mas desta forma fica tudo num único arquivo bem formatado:

a
t
o views_schema_xyz.sql
-- Gera DDL
SELECT
        '-- DDL da view ' || schemaname || '.' || viewname || chr(10) ||
            'CREATE VIEW ' || schemaname || '.' || viewname || ' AS ' || chr(10) ||
                definition || chr(10) ||
                'ALTER VIEW ' || schemaname || '.' || viewname || ' OWNER TO ' || viewowner || ';' ||
             chr(10)
    FROM pg_views
    WHERE schemaname = 'nome_do_esquema'
    ORDER BY schemaname, viewname;

-- Gera GRANTs
SELECT '--GRANTs';
SELECT
        'GRANT ' || string_agg(privilege_type,', ') || ' ON ' ||
         table_schema || '.' || table_name || ' TO ' || grantee || ';'
FROM
    information_schema.role_table_grants
    JOIN pg_views ON
        table_schema = schemaname AND
        table_name   = viewname
where table_schema = 'nome_do_esquema'
GROUP BY table_name, grantee;
o
a
t
q
cat views_schema_xyz.sql

 

No Comments

Leave a Reply

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.