今天公司中,因为要提供给其他开发人员,可以根据自己的需求查询数据库表的需求,所以经过一番测试,总结出了下面的一种方法
sql如下:
select
(select relname||'----'||(select description from pg_description where objoid=oid and objsubid=0) as comment from pg_class where oid=a.attrelid) as table_name,
"a".attname as column_name,
format_type("a".atttypid,"a".atttypmod) as data_type,
col_description("a".attrelid,"a".attnum) as comment
from pg_attribute "a"
where attstattarget=-1 and attrelid in (select oid from pg_class where relname in(select relname from pg_class))
order by table_name,"a".attnum;
下面做一下说明:
pg_description 是保存注释信息的系统表,但是比较尴尬的是,只保存了他所在属性列的id
pg_class 表记载表和几乎所有有 字段或者是那些类似表的东西。包括索引(不过还要参阅 pg_index),序列,视图,复合类型和一些特殊关系类型
pg_attribute 这个表存储了所有属性列
最终结果大致就显示成这样,然后可以把这样的结果放在一个视图 或者重新新建一个形式表,然后再分类进行查询