Postgresql、Hologres表结构查询语句

1、SQL语句展示

SELECT DISTINCT a.attnum as num,
 a.attndims as dimension_array,
 a.attname as name,
 t.typname as data_type,
 concat_ws('',t.typname,SUBSTRING(format_type(a.atttypid,a.atttypmod) from '\(.*\)')) as type_complete,
 a.attnotnull as notnull,a.attlen AS length,
 a.atttypmod AS lengthvar,com.description as comment,
 coalesce(i.indisprimary,false) as primary_key,
 def.adsrc as default_value
 FROM pg_attribute a
 JOIN pg_class pgc ON pgc.oid = a.attrelid
 LEFT JOIN pg_index i ON
  (pgc.oid = i.indrelid AND i.indkey[0] = a.attnum)
 LEFT JOIN pg_description com on
 (pgc.oid = com.objoid AND a.attnum = com.objsubid)
 LEFT JOIN pg_attrdef def ON
 (a.attrelid = def.adrelid AND a.attnum = def.adnum)
 Left join pg_type t on
 ( a.atttypid = t.oid)
 WHERE a.attnum > 0 AND pgc.oid = a.attrelid
 AND pg_table_is_visible(pgc.oid)
 AND NOT a.attisdropped
 AND pgc.relname = 【这儿写入你的表名,需要在表名两侧加上单引号】
 ORDER BY a.attnum

2、相关字段说明

字段名释义
num字段序号
dimension_array数组维度数量,0表示不存在数组维度,如果值为1则有一个数组维度[],如果值为2,则有两个数组维度[ ][ ],以此类推
name字段名称
data_type字段类型(不带字段精度)
type_complete字段类型(带字段精度)
notnull是否允许不为空 t-不允许为空值,f-允许为空值
length(该字段含义不明)
lengthvar字段长度,由该列显示出的长度往往都比预设值长4,该长度只能作为参考,不可实际使用
comment字段注释
primary_key是否是一个主键,t-主键,f-非主键
default_value默认值

3、其他结构查询语句展示

3.1、

SELECT
    nmsp_parent.nspname AS parent_schema ,
    parent.relname AS parent ,
    nmsp_child.nspname AS child ,
    child.relname AS child_schema
		
FROM
    pg_inherits JOIN pg_class parent
        ON pg_inherits.inhparent = parent.oid JOIN pg_class child
        ON pg_inherits.inhrelid = child.oid JOIN pg_namespace nmsp_parent
        ON nmsp_parent.oid = parent.relnamespace JOIN pg_namespace nmsp_child
        ON nmsp_child.oid = child.relnamespace
WHERE
    parent.relname = 【这儿写入你的表名,需要在表名两侧加上单引号】;

3.2、统计每张表的分区数量

SELECT
    nspname ,
    relname ,
    COUNT(*) AS partition_num
FROM
    pg_class c ,
    pg_namespace n ,
    pg_inherits i
WHERE
    c.oid = i.inhparent
    AND c.relnamespace = n.oid
    AND c.relhassubclass
    AND c.relkind = 'r'
GROUP BY 1,2 ORDER BY partition_num DESC;

3.3、

select a.attnum AS "序号",
c.relname AS "表名",
cast(obj_description(relfilenode,'pg_class') as varchar) AS "表名描述",
a.attname AS "列名",
concat_ws('',t.typname,SUBSTRING(format_type(a.atttypid,a.atttypmod) from '\(.*\)')) as "字段类型",
d.description AS "备注",
a.attnotnull as "是否允许为空",
def.adsrc as "默认值"
from pg_class c, pg_attribute a , pg_type t, pg_description d,pg_attrdef def
where  c.relname = 【这儿写入你的表名,需要在表名两侧加上单引号】
and a.attnum>0 
and a.attrelid = c.oid 
and a.atttypid = t.oid 
and  d.objoid=a.attrelid
and d.objsubid=a.attnum
and a.attrelid = def.adrelid 
--and a.attnum = def.adnum
ORDER BY c.relname DESC,a.attnum ASC
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值