PostgreSQL获取所有的表信息 字段信息

获取数据库中所有table名:

SELECT   tablename   FROM   pg_tables  
WHERE   tablename   NOT   LIKE   'pg%'  
AND tablename NOT LIKE 'sql_%'
ORDER   BY   tablename;

获取数据库中所有table名及table的注解信息:

SELECT   tablename,obj_description(relfilenode,'pg_class')  FROM   pg_tables  a, pg_class b
WHERE   
a.tablename = b.relname
and a.tablename   NOT   LIKE   'pg%'  
AND a.tablename NOT LIKE 'sql_%'
ORDER   BY   a.tablename;

获取指定table的所有字段信息:

SELECT col_description(a.attrelid,a.attnum) as comment,format_type(a.atttypid,a.atttypmod) as type,a.attname as name, a.attnotnull as notnull
FROM pg_class as c,pg_attribute as a
where c.relname = 'tablename' and a.attrelid = c.oid and a.attnum>0

查询字段名、字段类型及字段长度和字段注释:

select a.attnum,a.attname,concat_ws('',t.typname,SUBSTRING(format_type(a.atttypid,a.atttypmod) from '\(.*\)')) as type,d.description from pg_class c, pg_attribute a , pg_type t, pg_description d 
where  c.relname = 'table_name' and a.attnum>0 and a.attrelid = c.oid and a.atttypid = t.oid and  d.objoid=a.attrelid and d.objsubid=a.attnum

 

你可能感兴趣的:(postgresql)