EXCHANGE PARTITION

本文介绍了使用一个分区或子分区与单表进行交换的方法。

语法

ALTER TABLE...EXCHANGE PARTITION命令用于将一个分区或子分区与单表进行交换,可以将一个与分区表的表结构相同的单表交换为分区表中的一个分区或子分区。语法如下:

ALTER TABLE target_table
EXCHANGE PARTITION target_partition
WITH TABLE source_table
[{WITH | WITHOUT} VALIDATION];

语法中的参数说明如下:

参数

说明

target_table

用于交换的目标表名称。

target_partition

用于交换的目标分区名称。

source_table

用于交换的源表名称。

当执行完ALTER TABLE...EXCHANGE PARTITION命令后,最初在target_partition中的数据就会交换到source_table中,而最初在source_table中的数据则会交换到target_partition中。

WITHOUT VALIDATION选项表示不对单表的数据是否符合分区规则做校验,直接进行交换,是INSTANT DDL,且只交换元数据,需要用户保证数据是否符合分区规则。

说明

执行EXCHANGE PARTITION操作时,需要确保source_table的结构与target_table的结构一致,即两张表必须有相同的列、数据类型、引擎、表属性以及索引。

使用限制

若分区表或者单表通过INSTANT ADD COLUMN语句添加过字段,则不能使用EXCHANGE PARTITION语法进行交换。

示例

分区表sales_listp0分区与单表sales_list_tmp进行交换:

ALTER TABLE sales_list
  EXCHANGE PARTITION p0
  WITH TABLE sales_list_tmp;