sexta-feira, 28 de julho de 2017

DOCUMENTANDO UM BANCO DE DADOS POSTGRESQL/POSTGIS

Tendo as tabelas e campos de um banco de dados PostgreSQL comentados, fica fácil gerar a documentação desses campos e tabelas. Para isso pode ser usado:

  • Para documentar as tabelas (o SQL a seguir traz o esquema, a tabela, o dono, o comentário, o número de registros e o tablespace):

SELECT nspname AS esquema, c.relname AS tabela,
pg_catalog.pg_get_userbyid(c.relowner) AS dono,
pg_catalog.obj_description(c.oid, 'pg_class') AS comentario,
reltuples::integer as registros,
(SELECT spcname FROM pg_catalog.pg_tablespace pt WHERE pt.oid=c.reltablespace) AS tablespace
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind = 'r'
ORDER BY esquema, tabela;

  • Para documentar os campos (o SQL a seguir traz a tabela, a coluna, o tipo e o comentário):

SELECT t.relname AS tabela,
a.attname AS coluna,
pg_catalog.format_type(a.atttypid, a.atttypmod) AS tipo,
(SELECT col_description(a.attrelid,a.attnum)) AS comentario
FROM pg_catalog.pg_attribute a
INNER JOIN pg_stat_user_tables t ON a.attrelid = t.relid
WHERE a.attnum > 0 AND NOT a.attisdropped
ORDER BY tabela, coluna;

Outros exemplos podem ser encontrados em https://pt.wikibooks.org/wiki/PostgreSQL_Pr%C3%A1tico/Metadados