ALTER TABLE ATTACH PARTITION
功能描述
通过ALTER TABLE ATTACH PARTITION
可以把普通表和表数据加入到分区表中。
注意事项
- 该功能仅在数据库兼容模式为PostgreSQL时支持(即数据库实例初始化时指定DBCOMPATIBILITY='PG')。
- 仅Vastbase G100 V2.2 Build 10(Patch No.12)及以后补丁版本支持此功能。
- 不能把表attach到一个非分区的表。
- 不支持attach有分区的表、含有行安全的表、不同列的表、有触发器的表、临时表和非日志表。
- 不支持attach cstore或ustore表。
- attach表的列定义要相同。
语法格式
把普通表加入到分区表中:
ALTER TABLE table_name attach_partiotion_cmd
其中,attach_partiotion_cmd为:
ATTACH PARTITION table_name FOR VALUES
{ IN ( partition_value [, ...] ) |
FROM ( { partition_value | MINVALUE | MAXVALUE } [, ...] )
TO ( { partition_value | MINVALUE | MAXVALUE } [, ...] ) |
WITH ( MODULUS numeric_literal, REMAINDER numeric_literal ) | DEFAULT }
参数说明
table_name
要创建的表名。
VALUES
新分区的分区边界规范,即指定分区的范围。
DEFAULT
表示把普通表附加到分区表中,作为DEFAULT分区。hash分区表不支持DEFAULT分区。
示例
1、创建分区表。
create table rang_1156644(id int) partition by range(id);
2、创建分区。
create table tr1_1156644 partition of rang_1156644 for values from (11) to (50) partition by range(id);
3、创建普通表。
create table t1_1156644(id int);
create table t2_1156644(id int);
4、给普通表插入数据。
insert into t1_1156644 select generate_series(1,10);
insert into t2_1156644 select generate_series(11,20);
5、查看分区表的数据和结构。
select * from rang_1156644;
返回结果如下:
id
----
(0 rows)
6、附加普通表到分区表。
alter table rang_1156644 attach partition t1_1156644 for values from(1) to(11);
alter table tr1_1156644 attach partition t2_1156644 for values from(11) to(21);
7、再次查看分区表的数据和结构。
select * from rang_1156644;
返回结果如下:
id
----
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(20 rows)