Postgresには、システムコンテンツに関する情報を保存する別の方法があります。これは、システムカタログ と呼ばれます。 。
Firebirdでは、クエリは基本的に、すべてのスキーマのテーブルのすべての列の行と、フィールドデータ型にマップする追加の整数列を返します。
Postgresでpg_catalog
のシステムテーブルを使用 このクエリを使用して、同様のスキーマを実現できます:
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
上記のクエリは、システムカタログも返します。 除外したい場合 pg_namespace
に別のJOINを追加する必要があります pg_namespace.nspname <> 'pg_catalog'
を含むwhere句 、これはシステムカタログが保存されるスキーマであるためです。
代表的な番号の代わりにデータ型名も表示したい場合は、pg_type
にJOINを追加してください 。
情報スキーマ ビューのコレクションで構成されます。ほとんどの場合、ビューの背後にあるSQLクエリ全体は必要ないため、システムテーブルを使用するとパフォーマンスが向上します。ただし、出力の形成に使用されるテーブルと条件を開始するために、ビューの定義を調べることはできます。