VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

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)