Postgres ma inny sposób przechowywania informacji o zawartości systemu. Nazywa się to Katalogi systemowe .
W Firebird twoje zapytanie zasadniczo zwraca wiersz dla każdej kolumny tabeli w każdym schemacie z dodatkową kolumną Integer, która odwzorowuje typ danych pola.
W Postgresie przy użyciu tabel systemowych w pg_catalog
schemat coś podobnego można uzyskać za pomocą tego zapytania:
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
Powyższe zapytanie zwraca również katalogi systemowe. Jeśli chcesz wykluczyć musisz dodać kolejne JOIN do pg_namespace
i klauzulę WHERE z pg_namespace.nspname <> 'pg_catalog'
, ponieważ jest to schemat, w którym przechowywane są katalogi systemowe.
Jeśli chcesz również widzieć nazwy typów danych zamiast ich reprezentatywnych numerów, dodaj JOIN do pg_type
.
Schemat informacji składa się z kolekcji widoków. W większości przypadków nie potrzebujesz całego zapytania SQL, które stoi za widokiem, więc użycie tabel systemowych zapewni lepszą wydajność. Możesz jednak sprawdzić definicję widoków, aby rozpocząć pracę z tabelami i warunkami użytymi do utworzenia danych wyjściowych.