关于pgsql输出表结构的问题

今天公司中,因为要提供给其他开发人员,可以根据自己的需求查询数据库表的需求,所以经过一番测试,总结出了下面的一种方法

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 这个表存储了所有属性列

 

 

 

最终结果大致就显示成这样,然后可以把这样的结果放在一个视图 或者重新新建一个形式表,然后再分类进行查询

posted @ 2016-08-02 19:27  dtiove  阅读(1737)  评论(0编辑  收藏  举报