Eu tenho um grande banco de dados que preciso extrair todas as chaves primárias e chaves estrangeiras de cada tabela.
Eu tenho o pgAdmin III.
Existe uma maneira de fazer isso automaticamente e não revisar cada tabela manualmente?
Eu tenho um grande banco de dados que preciso extrair todas as chaves primárias e chaves estrangeiras de cada tabela.
Eu tenho o pgAdmin III.
Existe uma maneira de fazer isso automaticamente e não revisar cada tabela manualmente?
Você pode usar a função
pg_get_constraintdef(constraint_oid)
em uma consulta como a seguinte:Resultado:
Retorna todas as chaves primárias e estrangeiras para todas as tabelas no esquema fornecido, ordenadas por tablename, PKs primeiro.
O manual sobre
pg_constraint
.O manual sobre tipos de identificadores de objetos (
regclass
,regnamespace
, ...).Com base na solução Erwin:
Irá retornar uma tabela do formulário:
Não há necessidade de analisar
pg_get_constraintdef()
, basta usar as colunas dapg_constraint
tabela para obter outros detalhes ( os docs ).Aqui
constraint_type
pode ser:Com base na resposta de Erwin :
Os resultados são ordenados por
schema
etable
.Nota técnica: veja esta pergunta sobre
with ordinality
.Recentemente, tive que implementar isso para uma camada de acesso a dados que cria utilitários CRUD com base no esquema de informações, acabou indo com isso.