获取错误使用函数创建分区范围分区表...

时间:2016-10-11 12:09:11

标签: greenplum hawq

想要创建分区表但却出现语法错误:

CREATE TABLE public.emp(id int,date_1 date,amt decimal(10,2)) 分发者(id) 按范围划分(提取(从date_1开始的年份):: int) (START(' 2008')包含    结束(' 2010')EXCLUSIVE    每个(间隔' 1年')    );

错误:语法错误在或附近"(" 第3行:按范围划分(提取(从date_1开始的年份):: int)                                    ^

**********错误**********

错误:语法错误在或附近"(" SQL状态:42601 性格:117

3 个答案:

答案 0 :(得分:1)

'按范围划分'期望列名称为键。 尝试: 按范围划分(date_1) (START(日期' 2008-01-01')包含    结束(日期' 2009-01-01')EXCLUSIVE    每个(间隔' 1年') )

答案 1 :(得分:0)

如果您想为每个分区命名,那么您必须明确指定每个分区名称。

{{1}}

然后将创建以下三个分区表。

{{1}}

答案 2 :(得分:0)

我们需要手动提到每个分区的名称。这将按月和分区按月创建分区。

CREATE TABLE emp (id int, date_1 date, amt decimal(10,2))
DISTRIBUTED BY (id)
partition by range (date_1)
SUBPARTITION BY RANGE (date_1)
(
    PARTITION year_2008 START ('2008-01-01'::date) INCLUSIVE END ('2009-01-01'::date)
 ( 
   SUBPARTITION mnth_jan START ('2008-01-01'::date) INCLUSIVE,
   SUBPARTITION mnth_feb START ('2008-02-01'::date) INCLUSIVE
   END ('2008-03-01'::date)
 ),
    PARTITION year_2009 START ('2009-01-01'::date) INCLUSIVE END ('2010-01-01'::date)
 ( 
   SUBPARTITION mnth_jan START ('2009-01-01'::date) INCLUSIVE,
   SUBPARTITION mnth_feb START ('2009-02-01'::date) INCLUSIVE
   END ('2009-03-01'::date)
 )
 );