想要创建分区表但却出现语法错误:
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
答案 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)
)
);