对于一般的表格和视图,我可以通过运行以下查询来查看它们的数据类型:
select data_type from information_schema.columns
where .....
然而,并没有任何关于物化视图的信息出现在这里。
通过运行以下命令,我可以获取一个物化视图的列列表:
SELECT
a.attname as column_name
FROM
pg_catalog.pg_attribute a
INNER JOIN
(SELECT c.oid,
n.nspname,
c.relname
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname ~ ('^(materializedview)$')
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3) b
ON a.attrelid = b.oid
INNER JOIN
(SELECT
a.attrelid,
max(a.attnum) as max_attnum
FROM pg_catalog.pg_attribute a
WHERE a.attnum > 0
AND NOT a.attisdropped
GROUP BY a.attrelid) e
ON a.attrelid=e.attrelid
WHERE a.attnum > 0
AND NOT a.attisdropped
ORDER BY a.attnum
但是,我还没有找到一种方法来确定底层列/数据类型。
有没有一种方法可以查看这些信息?
typelem
加入pg_catalog.pg_type
?根据文档,该字段仅适用于类似数组的类型。我认为应该使用pg_catalog.pg_type.oid
。 - Hubbitus