PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Spaltennamen und Datentypen für materialisierte Ansichten in PostgreSQL?

Ich glaube, du bist ganz in der Nähe. Der letzte Schritt wäre, sich mit pg_type zu verbinden :

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

Das Feld tp.typname hätte den Datentyp.

Die folgende Abfrage ruft Spaltendatentypen unter Verwendung des Namensraums (z. B. Schema) und des Beziehungsnamens (z. B. materialisierte Ansicht) ab:

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

Sie müssen 'your_schema' ändern und 'your_materialized_view' .