PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Noms de colonnes et types de données pour les vues matérialisées dans PostgreSQL ?

Je pense que tu es très proche. La dernière étape serait de joindre avec pg_type :

join pg_catalog.pg_type as tp on tp.oid = attr.atttypid

Le champ tp.typname aurait le type de données.

La requête suivante obtient les types de données de colonne en utilisant l'espace de noms (par exemple, le schéma) et le nom de la relation (par exemple, la vue matérialisée) :

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

Vous devez changer 'your_schema' et 'your_materialized_view' .