关于pgsql输出表结构的问题

今天公司中,因为要提供给其他开发人员,可以根据自己的需求查询数据库表的需求,所以经过一番测试,总结出了下面的一种方法

sql如下:

select

(select relname||‘----‘||(select description from pg_description where objoid=oid and objsubid=0) as comment from pg_class where oid=a.attrelid) as table_name,

"a".attname as column_name,

format_type("a".atttypid,"a".atttypmod) as data_type,

col_description("a".attrelid,"a".attnum) as comment

from pg_attribute "a"

where attstattarget=-1 and attrelid in (select oid from pg_class where relname in(select relname from pg_class))

order by table_name,"a".attnum;

下面做一下说明:

pg_description 是保存注释信息的系统表,但是比较尴尬的是,只保存了他所在属性列的id

pg_class  表记载表和几乎所有有 字段或者是那些类似表的东西。包括索引(不过还要参阅 pg_index),序列,视图,复合类型和一些特殊关系类型

pg_attribute 这个表存储了所有属性列

最终结果大致就显示成这样,然后可以把这样的结果放在一个视图 或者重新新建一个形式表,然后再分类进行查询

时间: 2024-12-24 07:03:19

关于pgsql输出表结构的问题的相关文章

生成pgsql表结构的程序

//前台代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xht

一个漂亮的输出MySql数据库表结构的PHP页面

经常为了方便和直观,我们会首先直接在数据库中设计出表,但是接下来又要将表的结构和设计编写在设计文档中,以便编码的时候可以直观的查询,一旦数据库表非常多,字段非常多的时候,这无疑是件非常郁闷的工作. 这是一个漂亮的PHP页面,可以自动输出MySql数据库所有表结构,大大方便了文档的编写工作,也同时非常方便编码的时候进行查询.当然在设计MySql数据库表和字段的时候详细填写表和字段的备注,这是非常好的习惯,对这个网页的输出也是最佳效果的. <!DOCTYPE html PUBLIC "-//W

JFinal里得到表结构的方法总结

JFinal里得到表结构的方法总结: 1.得到已经配置的Model类的表结构.(推荐用法).如下,定义一个User的Model类,这样就可以得到Model类的表结构了.具体实现不明白,请高手指导. public void tableMappingTest(){  Table table = TableMapping.me().getTable(User.me.getClass());    renderText(table.getColumnTypeMap().toString());   }

读数据库所有表和表结构的sql语句

SQL获取所有数据库名.表名.储存过程以及参数列表 1.获取所有用户名:SELECT name FROM Sysusers where status='2' and islogin='1'islogin='1'表示帐户islogin='0'表示角色status='2'表示用户帐户status='0'表示糸统帐户2.获取所有数据库名:SELECT Name FROM Master..SysDatabases ORDER BY Name3.获取所有表名SELECT Name FROM Databas

菜鸟学SSH(十一)——Hibernate之SchemaExport+配置文件生成表结构

今天说点基础的东西,说说怎样通过SchemaExport跟Hibernate的配置文件生成表结构.事实上方法很easy,仅仅须要两个配置文件,两个Java类就能够完毕. 首先要生成表,得先有实体类,以Person.java为例: /** * * @author Administrator * @hibernate.class table="T_Person" */ public class Person { /** * @hibernate.id * generator-class=&

SQL优化的四个方面,缓存,表结构,索引,SQL语句

一,缓存 数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作.而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级.所以,要优化数据库,首先第一步需要优化的就是 IO,尽可能将磁盘IO转化为内存IO. query_cache_size/query_cache_type (global) Query cache 作用于整个 MySQL Instance,主要用来缓存 MySQL 中的 ResultSet,也就是一条S

利用中转输出表制作HijackDll

[原创]利用中转输出表制作HijackDll(附工具源码)作 者: baixinye时 间: 2012-08-05,16:48:45链 接: http://bbs.pediy.com/showthread.php?t=154269 众所周知,PE文件中的导出表指向一个IMAGE_EXPORT_DIRECTORY结构,该结构定义如下: typedef struct _IMAGE_EXPORT_DIRECTORY {    DWORD   Characteristics;    DWORD   Ti

PE文件结构(四) 输出表

PE文件结构(四) 参考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 输出表 一般来说输出表存在于dll中.输出表提供了 文件中函数的名字跟这些函数的地址, PE装载器通过输出表来修改IAT. IMAGE_OPTIONAL_HEADER中的 DataDirectory[0] 提供了输出表的RVA.输出表是以一个IMAGE_EXPORT_DIRECTORY结构 开始的. IMAGE_EXPORT_DIRECTORY结构: typedef struct _IMAGE_EXPORT_DIREC

赵雅智_sqlite修改表结构

1.更改数据库版本号(每次更新都一定要进行版本的升级) 2.更新语句一条一条写,不能并列写 例如: public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) { db.execSQL("alter table users add userage integer;<span style="font-family: Arial, Helvetica, sans-serif;">alter table us