更新时间:2022-02-22 GMT+08:00

指定筛选条件删除分区

功能描述

指定筛选条件删除分区表的一个或多个分区。

语法格式

1
2
3
ALTER TABLE [db_name.]table_name
  DROP [IF EXISTS]
  PARTITIONS partition_filtercondition;

关键字

  • DROP:删除表分区。
  • IF EXISTS:所要删除的分区必须是已经存在的,否则会出错。
  • PARTITIONS:分区。

参数说明

表1 参数描述

参数

描述

db_name

Database名称,由字母、数字和下划线(_)组成。不能是纯数字,且不能以下划线开头。

table_name

Database中的表名,由字母、数字和下划线(_)组成。不能是纯数字,且不能以下划线开头。匹配规则为:^(?!_)(?![0-9]+$)[A-Za-z0-9_$]*$。如果特殊字符需要使用单引号('')包围起来。

partition_filtercondition

分区筛选条件。具体可以为以下格式:

  • <分区列名> <运算符> <分区列比较值>

    例如:start_date < '201911'

  • <partition_filtercondition1> AND|OR <partition_filtercondition2>

    例如:start_date < '201911' OR start_date >= '202006'

  • (<partition_filtercondition1>)[,partitions (<partition_filtercondition2>), ...]

    例如:(start_date <> '202007'), partitions(start_date < '201912')

注意事项

  • 所要删除分区的表必须是已经存在的表,否则会出错。
  • 所要删除的分区必须是已经存在的,否则会出错,可通过语句中添加IF EXISTS避免该错误。

示例

将分区表student的分区dt,按照各种筛选过滤条件删除。

1
2
3
4
5
6
7
8
alter table student drop partitions(start_date < '201911');
alter table student drop partitions(start_date >= '202007');
alter table student drop partitions(start_date BETWEEN '202001' AND '202007');
alter table student drop partitions(start_date < '201912' OR start_date >= '202006');
alter table student drop partitions(start_date > '201912' AND start_date <= '202004');
alter table student drop partitions(start_date != '202007');
alter table student drop partitions(start_date <> '202007');
alter table student drop partitions(start_date <> '202007'), partitions(start_date < '201912');