之前从网上也搜索了一些关于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-如何查数据库表、字段以及字段类型、注释等信息?的更多相关文章

  1. 【Java/JDBC】借助ResultSetMetaData,从数据库表中抽取字段信息存成Excel文件

    本例工程下载:https://files.cnblogs.com/files/xiandedanteng/FindNotnullColumns20191102-3.rar 工作中曾有个为42张表建立测 ...

  2. c++获取sqlite3数据库表中所有字段的方法

    常用方法: 1.使用sqlite3_get_table函数 2.获取sqlite创建表的sql语句字符串,然后进行解析获取到相应的字段 3.采用配置文件的方式,将所有字段名写入配置文件 方法1:使用s ...

  3. django使用model创建数据库表使用的字段

    Django通过model层不可以创建数据库,但可以创建数据库表,以下是创建表的字段以及表字段的参数.一.字段1.models.AutoField 自增列= int(11) 如果没有的话,默认会生成一 ...

  4. SQL提取数据库表名,字段名等信息

    -------提取数据库所有表的表名.字段名 -------在SQLserver 2000中测试 --查询所有用户表所有字段的特征 SELECT D.Name as TableName, A.colo ...

  5. SqlServer数据库表导入SqlLite数据库表保持日期时间类型字段的格式

    在写查询功能的过程中遇到一个这样的问题:按日期范围查询,sql语句是:where dt>=用户选择起始日期&&dt<=用户选择结束日期.数据库中的数据如图1,我选择的测试数 ...

  6. SQlServer 数据库表名称,字段比较

    项目中一般分测试环境(QAS),生产环境(PRD),当我们的项目经历了一次周期跨度较长的更新后,当我们发布到生产环境时,首要的任务是将新增的表,字段更新到生产数据库.很多时候,当我们发布更新的时候,已 ...

  7. 使用python来反查数据表中的字段名

    1. 链接数据库 import psycopg2 conn = psycopg2.connect(user,host,port,database,password) cur = conn.cursor ...

  8. 往sql数据库表中添加字段

    通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数增加字段: alter table [表名] add 字段名 smallin ...

  9. MySQL向数据库表的某字段追加数据

    使用CONCAT()函数 mysql向表中某字段后追加一段字符串(field为字段名): update table_name set field=CONCAT(field,'str',) mysql ...

  10. Mysql查询数据库表结构以及字段类型并展示

    1.建表语句sys_user CREATE TABLE `sys_user` ( `id` varchar(32) NOT NULL COMMENT '编号', `dept_id` varchar(3 ...

随机推荐

  1. enode框架step by step之Staged event-driven architecture思想的运用

    enode框架step by step之Staged event-driven architecture思想的运用 enode框架系列step by step文章系列索引: 分享一个基于DDD以及事件 ...

  2. 把虚拟机中的Linux系统安装到U盘中

    [小技巧] 把虚拟机中的Linux系统安装到U盘中 出于各种需求,很多用户可能经常会在Windows系统中安装虚拟机,然后在虚拟机中安装Linux系统.使用虚拟机的优点是可以同时使用多个系统,而缺点也 ...

  3. Tomcat启动时卡在“INFO: Deploying web application directory ”

    今天在linux上的tomcat部署一个网站时,在刚启动tomcat的时候提示启动成功,然后也能访问成功. 可是第二次启动时虽然没有报错,但无法访问tomcat,查看了catalina.out日志,发 ...

  4. Linux centos7环境下安装JDK的步骤详解

    Linux centos7环境下安装JDK的步骤详解 测试root用户下JAVA版本 输入命令:   java –version 1.先到Oracle官网里下载好jdk,网址如下: http://ww ...

  5. [asp.net] 利用WebClient上传图片到远程服务

    一.客户端 1.页面 1 <form id="Form1" method="post" runat="server" enctype= ...

  6. Dos.ORM Select查询 自定义列

    自定义列 .Select( p = >new{ test = p.id}) // 同sql 列名 as 新列名 如下是 自己在写代码的例子,查询,分页,where条件,排序 var where ...

  7. ubuntu 编译android源码

    1.https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/                                   清华大学Android 镜像使用 ...

  8. 上传代码到GitHub时,遇到错误:fatal,The Requested URL return error 403

    解决: from:pushing-to-git-returning-error-code-403-fatal-http-request-failed

  9. 舒适的路线 (code[vs] 1001)

    传送门 :code[vs]  1001 思路:拿到这题的首先的思路 , 就是跑一遍最短路. 可是在尝试了一会后发现不会写,于是果断弃 尝试另外的算法.. 于是就有的以下的算法.并查集 + 乱搞(有点像 ...

  10. 极路由器刷机安装ss插件最新教程

    极路由器系统升级后,旧的插件已不可用,这里是最新极路由器刷机教程,可实现绑定ss代理账号的功能. 获取root权限 安装开发者插件,获取root权限,请先登录极路由器后台(电脑浏览器访问 192.16 ...