Postgres中结构类型列的元数据

时间:2017-09-13 06:21:15

标签: java postgresql

在我的Postgres数据库中,我有这个表:

CREATE TYPE address_type AS (
     name    text,
     street  text,
     houseno integer );

CREATE TABLE person (
     address   address_type,
     count     integer ); 

我需要获取address_type字段的元数据。
我已经浏览了documentationthis并且很喜欢,但只获取列名称,而且它的数据类型对我来说还不够,我需要获取元数据列的字段,例如,结构的所有字段(name,street,houseno)以及它们的类型(text,text,int)。
有人可以在这方面指导我吗? 它甚至可行吗?

1 个答案:

答案 0 :(得分:1)

您可以使用如下查询找到复合类型的字段名称和类型:

SELECT a.attname, a.atttypid::regtype
FROM pg_attribute a
   JOIN pg_class c ON a.attrelid = c.oid
WHERE c.relname = 'address_type'
  AND c.relkind = 'c'
  AND NOT a.attisdropped
  AND a.attnum > 0
ORDER BY a.attnum;