--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 tinner join pg_class c on t.tablename=c.relnameleft join pg_description d on c.oid=d.objoid and d.objsubid=0left join pg_description db on c.oid=db.objoid and db.objsubid>0left join pg_attribute a on c.oid=a.attrelid and db.objsubid=a.attnumleft 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.attrnumsleft join pg_type p on a.atttypid=p.oidleft 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;