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

 

Compartilhe

Você pode gostar

Sobre minha saída da Timbira

Há 14 anos, durante o PGConf.Brasil 2009, lá na UNICAMP em Campinas/SP, 4 pessoas se reuniram e idealizaram a criação da primeira empresa dedicada exclusivamente

Split brain

Já tem algum tempo que eu pensava em fazer isso e chegou a hora. Este blog vai se dividir em 2 partes a partir de

plugins premium WordPress