资源描述:
《greenplum数据字典》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、greenplum是基于postgresql开发的分布式数据库,里面大部分的数据字典是一样的。我们在维护gp的时候对gp的数据字典比较熟悉,特此分享给大家。在这里不会详细介绍每个字典的内容,只会介绍常见的应用以及一些已经封装好了的函数。具体的介绍大家可以去看postgresql的中文文档,里面有详细的解释。 1.postgresql中,所有数据库的对象都是用oid连接在一起的。 这样子会造成我们在理解数据字典的时候有一些不知所措。下面介绍几个函数,可以简化很多的操作。名字引用描述regprocpg_proc
2、函数名字regprocedurepg_proc带参数类型的函数regoperpg_operator操作符名regoperatorpg_operator带参数类型的操作符regclasspg_class关系名 最常用的是regclass,关联数据字典的oid,使用方法如下: aligputf8=#select1259::regclass; regclass———- pg_class(1row)aligputf8=#selectoid,relnamefrompg_classwhereoid=’pg_class’::r
3、egclass; oid
4、relname ——+———- 1259
5、pg_class(1row) 这样子就可以通过regclass寻找一个表的信息,就不用去关联pg_class跟pg_namespace(记录schema信息)了。比较方便。 同样的,其他几个类型也是一样的用法,如regproc(regprocedure)是跟pg_proc(保存普通函数的命令)关联的。regoper(regoperator)是跟pg_operator(操作符)的oid关联的。Eg:aligputf8=#selec
6、toid::regoper,oid::regoperator,oid,oprnamefrompg_operatorlimit1; oid
7、 oid
8、oid
9、oprname————–+——————-+—–+——— pg_catalog.=
10、=(integer,bigint)
11、 15
12、=(1row)aligputf8=#selectoid::regproc,oid::regprocedure,oid,pronamefrompg_proclimit1; oid
13、 oid
14、
15、oid
16、proname——–+—————–+——+——— boolin
17、boolin(cstring)
18、1242
19、boolin(1row) 下面给给出如何使用regclass的例子。 2.获取表的字段信息。 表名是放在pg_class,schema名是放在pg_namespace里面的,字段信息是放在pg_attribute里面的。一般是关联这三张表: eg: SELECTa.attname,pg_catalog.format_type(a.atttyp
20、id,a.atttypmod)ASdata_type FROM pg_catalog.pg_attributea, ( SELECT c.oid FROM pg_catalog.pg_classc LEFTJOINpg_catalog.pg_namespacen ONn.oid=c.relnamespace WHEREc.relname=‘pg_class’ ANDn.nspname=
21、‘pg_catalog’ )b WHEREa.attrelid=b.oid ANDa.attnum>0 ANDNOTa.attisdroppedORDERBYa.attnum; 如果使用regclass就会简化很多: SELECTa.attname,pg_catalog.format_type(a.atttypid,a.atttypmod)ASdata_type FROM pg_catalog.pg_attributea
22、WHEREa.attrelid=’pg_catalog.pg_class’::regclass ANDa.attnum>0 ANDNOTa.attisdroppedORDERBYa.attnum; 其实regclass就是一个类型,oid或text到regclass有一个类型转换,跟多表