更新时间:2026-07-03 GMT+08:00
分享

删除分区

功能描述

删除分区表的一个或多个分区。管理表和OBS表均支持使用本命令删除分区。对于OBS表,还可以使用指定筛选条件删除分区按条件批量删除。

语法格式

ALTER TABLE [db_name.]table_name
  DROP [IF EXISTS]
  PARTITION partition_spec1 [, PARTITION partition_spec2, ...];

参数说明

参数

描述

db_name

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

table_name

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

IF EXISTS

可选关键字。指定该关键字后,若分区不存在则不会报错,静默跳过。

partition_spec

分区规格,格式为 (col1=val1, col2=val2, ...)。若分区字段为多个字段,可以不包含所有的字段,会删除匹配上的所有分区。

注意事项

  • 所要删除分区的表必须是已经存在的表,否则会出错。
  • 所要删除的分区必须是已经存在的,否则会出错,可通过语句中添加 IF EXISTS 避免该错误。
  • 对于OBS表,删除分区仅删除元数据,OBS目录中的数据文件不会自动删除。

示例1:删除指定分区

删除表 student 中 facultyNo=20, classNo=103 的分区。

ALTER TABLE student DROP
  PARTITION (facultyNo=20, classNo=103);

示例2:使用IF EXISTS删除分区

使用IF EXISTS避免分区不存在时报错。

ALTER TABLE student DROP IF EXISTS   PARTITION (facultyNo=99, classNo=999);

示例3:同时删除多个分区

在一条语句中删除多个分区。

ALTER TABLE student DROP IF EXISTS
  PARTITION (facultyNo=99, classNo=999);

示例4:指定数据库的表删除分区

删除数据库 academy 中表 student 的分区。

ALTER TABLE academy.student DROP IF EXISTS
  PARTITION (facultyNo=20, classNo=103);

相关文档