PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Traduzindo consulta do Firebird para o PostgreSQL


O Postgres tem outra maneira de armazenar informações sobre o conteúdo do sistema. Isso é chamado de Catálogos do sistema .

No Firebird, sua consulta basicamente retorna uma linha para cada coluna de uma tabela em cada esquema com uma coluna Integer adicional que mapeia para um tipo de dados de campo.

No Postgres usando tabelas do sistema em pg_catalog esquema algo semelhante pode ser alcançado usando esta consulta:
SELECT 
  TRIM(c.relname) AS table_name, TRIM(a.attname) AS column_name, a.atttypid AS field_type
FROM pg_class c
LEFT JOIN pg_attribute a ON 
  c.oid = a.attrelid
  AND a.attnum > 0 -- only ordinary columns, without system ones
WHERE c.relkind = 'r' -- only tables
ORDER BY 1,2

A consulta acima também retorna os catálogos do sistema. Se você deseja excluir você precisa adicionar outro JOIN ao pg_namespace e uma cláusula where com pg_namespace.nspname <> 'pg_catalog' , porque este é o esquema em que os catálogos do sistema são armazenados.

Se você também quiser ver os nomes dos tipos de dados em vez de seus números de representantes, adicione um JOIN a pg_type .

Esquema de informações consiste na coleção de visualizações. Na maioria dos casos, você não precisa de toda a consulta SQL que está por trás da exibição, portanto, o uso de tabelas do sistema proporcionará um melhor desempenho. No entanto, você pode inspecionar a definição de visualizações, apenas para começar nas tabelas e condições usadas para formar uma saída.