码迷,mamicode.com
首页 > 其他好文 > 详细

GreenPlum中自定义查询表分区的视图

时间:2016-07-19 02:40:29      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:查询   greenplum   分区表   

  GreenPlum中查询分区表的信息本身并不是特别的友好,需要做表关联并且做相应的处理,为了后期维护起来方便,这里创建两个视图供DBA直接查询,非常的方便。

1、创建list分区表的视图
create or replace view v_gp_list_partition_meta
as 
SELECT 
	pp.parrelid::regclass table_name,
	pr1.parchildrelid::regclass child_tbl_name,
	pr1.parname as partition_name,
	pr1.parruleord as partitionposition,
	translate(pg_get_expr(pr1.parlistvalues,pr1.parchildrelid),‘-‘‘:date character varying bpchar numeric double percision timestamp without time zone‘,‘‘) as partitionlistvalue,
	substring(parlistvalues,‘consttype ([0-9]+)‘)::integer::regtype listtype
FROM  pg_partition pp, pg_partition_rule pr1
where pp.paristemplate = false and pr1.paroid=pp.oid and pp.parkind = ‘l‘;

2、创建range分区表的视图
create or replace view v_gp_range_partition_meta
as 
SELECT 
	pp.parrelid::regclass table_name,
	pr1.parchildrelid::regclass child_tbl_name,
	pr1.parname as partition_name,
	pr1.parruleord as partitionposition,
	translate(pg_get_expr(pr1.parrangestart,pr1.parchildrelid),‘-‘‘:date character varying bpchar numeric double percision timestamp without time zone‘,‘‘) as partitionrangestart,
	translate(pg_get_expr(pr1.parrangeend,pr1.parchildrelid),‘-‘‘:date character varying bpchar numeric double percision timestamp without time zone‘,‘‘) as partitionrangeend,
	substring(parrangeend,‘consttype ([0-9]+)‘)::integer::regtype rangetype
FROM  pg_partition pp, pg_partition_rule pr1
where pp.paristemplate = false and pr1.paroid=pp.oid and pp.parkind = ‘r‘;

3、依次查询两个视图
testdb=# select * from v_gp_list_partition_meta;
         table_name          |               child_tbl_name                | partition_name | partitionposition | partitionlistvalue | listtype 
-----------------------------+---------------------------------------------+----------------+-------------------+--------------------+----------
 tbl_partition_list_yyyymmdd | tbl_partition_list_yyyymmdd_1_prt_p20160718 | p20160718      |                 1 | 20160718           | date
 tbl_partition_list_yyyymmdd | tbl_partition_list_yyyymmdd_1_prt_p20160719 | p20160719      |                 2 | 20160719           | date
(2 rows)

testdb=# select * from v_gp_range_partition_meta;
         table_name          |               child_tbl_name                | partition_name | partitionposition | partitionlistvalue | listtype 
-----------------------------+---------------------------------------------+----------------+-------------------+--------------------+----------
 tbl_partition_range_yyyymmdd | tbl_partition_range_yyyymmdd_1_prt_p20160718 | p20160718      |                 1 | 20160718            | 20160719          | date
 tbl_partition_range_yyyymmdd | tbl_partition_range_yyyymmdd_1_prt_p20160719 | p20160719      |                 2 | 20160719            | 20160720          | date
(121 rows)


本文出自 “勇敢向前,坚决向左” 博客,谢绝转载!

GreenPlum中自定义查询表分区的视图

标签:查询   greenplum   分区表   

原文地址:http://quenlang.blog.51cto.com/4813803/1827328

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!