之前从网上也搜索了一些关于postgreSQL的系统表含义以及如何查表相关信息,但是都没有一个完整的内容,所以自己将找到的一些内容作了下整合,大家可以根据自己需要再对sql进行调整。
--1.查询对象字段、注释和字段类型 select t.schemaname ,c.relname object_name ,d.description object_comment --,c.reltuples count --,c.relkind object_type --r = 普通表,i = 索引,S = 序列,v = 视图, c = 复合类型,s = 特殊,t = TOAST表 --,c.relhaspkey primary_key --f:假,t-:真 ,a.attname column_name ,db.description column_comment ,s.attrnums distributed_column --,case when s.attrnums is not null then 'is distributed key' end distributed_column --,a.attnum column_seq ,case p.typname when 'int8' then 'bigint' when 'int4' then 'integer' when 'int2' then 'smallint' when 'timestamp' then 'timestamp without time zone' when 'date' then 'date' when 'varchar' then 'character varying('||a.atttypmod - 4||')' when 'numeric' then 'numeric('||(a.atttypmod - 4) / 65536||','||(atttypmod - 4) % 65536||')' end column_type ,at.adsrc AS column_default ,CASE WHEN a.attnotnull THEN 'not null' ELSE '' END AS column_not_null --,p.typname --,p.typlen --,a.atttypmod - 4 as column_length from pg_tables t inner join pg_class c on t.tablename=c.relname left join pg_description d on c.oid=d.objoid and d.objsubid=0 left join pg_description db on c.oid=db.objoid and db.objsubid>0 left join pg_attribute a on c.oid=a.attrelid and db.objsubid=a.attnum left join ( select a.attrnums[i.i] attrnums,b.attname,a.localoid from gp_distribution_policy a, (select generate_series(1,10)) i(i), --预计表分布键的个数为10个 pg_attribute b where a.attrnums[i.i] is not null and a.localoid=b.attrelid and a.attrnums[i.i]=b.attnum ) s on c.oid=s.localoid and a.attnum=s.attrnums left join pg_type p on a.atttypid=p.oid left join pg_attrdef at on c.oid=at.adrelid and a.attnum=at.adnum where upper(c.relname) = upper('bas_add_sub_rep') --表名 order by a.attnum;

PostgreSQL系统表查询指南
本文提供了一种全面的方法来查询PostgreSQL系统表,包括对象字段、注释、字段类型等详细信息。通过复杂的SQL查询,可以获取表的元数据、字段属性、分布键等,适用于需要深入了解数据库结构的场景。
1631

被折叠的 条评论
为什么被折叠?



