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

 

补充

select column_name from information_schema.columns where table_schema='public' and table_name<>'pg_stat_statements';



版权声明:本文为CSDN博主「凌渊阁」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zw3413/java/article/details/83592413


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM