Onde o PostgreSQL armazena a estrutura das tabelas (information_schema, columns, key_column_usage, table_constraints)?

O PostgreSQL armazena a estrutura das tabelas (também chamados de metadados) em um schema especial chamado information_schema.

O information_schema contém várias tabelas com quase todas as definições e configurações do PostgreSQL. De cadastro de usuários, configurações de tabelas, permissões de usuários, etc.

Para descobrir dados sobre as colunas de uma tabela:

SELECT *FROM information_schema.columns;

Informações mais completas sobre uma tabela pode ser obtida assim:

SELECT *FROM information_schema.columns colsLEFT JOIN information_schema.key_column_usage kcu   ON kcu.table_schema = cols.table_schema AND kcu.table_name = cols.table_name AND kcu.column_name = cols.column_nameLEFT JOIN information_schema.table_constraints tco   ON kcu.constraint_name = tco.constraint_name AND kcu.constraint_schema = tco.constraint_schemaWHERE cols.table_schema = 'seu_schema' AND cols.table_name = 'nome_da_tabela';

Nessa consulta são usadas as tabelas

information_schema.columns

information_schema.key_column_usage

information_schema.table_constraints

Essa outra tabela também dis informações interessantes sobre as constraints:

SELECT *FROM information_schema.constraint_column_usage;

Referências

Como listar as foreign keys de uma tabela?
https://stackoverflow.com/questions/1152260/how-to-list-table-foreign-keys

You should also read:

PostgreSQL

# Instalando o wget para fazer download da chave do repositório # Instalando o wget, capaz de fazer downloads de documentos via HTTP…