あなたはとても近いと思います。最後のステップは、pg_type
と結合することです。 :
join pg_catalog.pg_type as tp on tp.oid = attr.atttypid
フィールドtp.typname
データ型があります。
次のクエリは、名前空間(スキーマなど)とリレーション(マテリアライズドビューなど)の名前を使用して列のデータ型を取得します。
select
attr.attnum,
ns.nspname as schema_name,
cls.relname as table_name,
attr.attname as column_name,
tp.typname as datatype
from pg_catalog.pg_attribute as attr
join pg_catalog.pg_class as cls on cls.oid = attr.attrelid
join pg_catalog.pg_namespace as ns on ns.oid = cls.relnamespace
join pg_catalog.pg_type as tp on tp.oid = attr.atttypid
where
ns.nspname = 'your_schema'
and cls.relname = 'your_materialized_view'
and attr.attnum >= 1
order by
attr.attnum
'your_schema'
を変更する必要があります および'your_materialized_view'
。