【数据库】postgresql 获取数据表结构

1、获取符合条件的所有表

SELECT
	relname AS tabname,
	CAST (
		obj_description (relfilenode, 'pg_class') AS VARCHAR
	) AS COMMENT
FROM
	pg_class c
where (relname like 'fx_%' or relname like 'ten_%')
order by relname

2、获取“public”下所有表及各表的结构

SELECT
  C .relname,
  CAST (obj_description (c.relfilenode, 'pg_class') AS VARCHAR) AS COMMENT,
  A .attname AS field,
  concat_ws('',t.typname,SUBSTRING(format_type(a.atttypid,a.atttypmod) from '\(.*\)')) as type_length,
  b.description AS COMMENT,
  case  when A .attnotnull = 't' THEN 'true' else 'false' end AS NOTNULL,
  case when(select count(pc.conname) from pg_constraint  pc where a.attnum = pc.conkey [ 1 ] and pc.conrelid = c.oid) = '1' then 'true' else 'false' end as iskey
FROM
  pg_class C,
  pg_attribute A

LEFT OUTER JOIN pg_description b ON A .attrelid = b.objoid
AND A .attnum = b.objsubid,
 pg_type T
WHERE
  C .relname in(select pt.tablename from pg_tables pt where pt.schemaname = 'public') 
AND A .attnum > 0
AND A .attrelid = C .oid
AND A .atttypid = T .oid
ORDER BY
  C .relname,
  A .attnum;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值