Postgres har ett annat sätt att lagra information om systeminnehåll. Detta kallas Systemkataloger .
I Firebird returnerar din fråga i princip en rad för varje kolumn i en tabell i varje schema med ytterligare en heltalskolumn som mappas till en fältdatatyp.
I Postgres med hjälp av systemtabeller i pg_catalog
schema något liknande kan uppnås med denna fråga:
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
Ovanstående fråga returnerar också systemkataloger. Om du vill utesluta dem behöver du lägga till ytterligare JOIN till pg_namespace
och en where-sats med pg_namespace.nspname <> 'pg_catalog'
, eftersom detta är schemat där systemkataloger lagras.
Om du också vill se datatypnamn istället för deras representativa nummer lägg till en JOIN till pg_type
.
Informationsschema består av insamling av synpunkter. I de flesta fall behöver du inte hela SQL-frågan som står bakom vyn, så att använda systemtabeller ger dig bättre prestanda. Du kan dock granska definitionen av vyer, bara för att komma igång med tabellerna och villkoren som används för att skapa en utdata.