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

修改表分区位置

功能描述

修改OBS表分区的存储位置。该命令仅支持OBS表(外部表),不支持管理表。

语法格式

ALTER TABLE table_name
  PARTITION partition_specs
  SET LOCATION 'obs_path';

关键字

  • PARTITION:指定要修改位置的分区。
  • SET LOCATION:设置分区的新存储路径。
  • LOCATION:分区路径,必须为OBS格式。

参数说明

参数

是否必选

描述

table_name

表名称。

partition_specs

分区规格,格式为(col1=val1, col2=val2, ...)。分区必须已存在。

obs_path

新的OBS存储路径,必须为已存在的绝对路径。

注意事项

  • 该命令仅支持OBS表(外部表),不支持管理表。
  • 所要修改位置的表分区必须是已经存在的,否则将报错。
  • 指定的新OBS路径必须是已经存在的绝对路径,否则将报错。
  • 若新路径包含子目录,则子目录下面的所有文件类型及内容也将作为该分区的记录,需保证与表字段一致。
  • 修改分区位置不会自动迁移已有数据。

示例1:修改单分区列的分区位置

ALTER TABLE student
  PARTITION (dt='2008-08-08')
  SET LOCATION 'obs://my-bucket/student/dt=2008-08-08/';

示例2:修改多分区列的分区位置

ALTER TABLE student
  PARTITION (dt='2008-08-08', city='beijing')
  SET LOCATION 'obs://my-bucket/student/dt=2008-08-08/city=beijing/';

示例3:修改后验证分区位置

ALTER TABLE student PARTITION (dt='2008-08-08') SET LOCATION 'obs://my-bucket/student/new_path/';

SHOW PARTITIONS student;

示例4:指定数据库的表修改分区位置

ALTER TABLE myschool.student
  PARTITION (class='101')
  SET LOCATION 'obs://my-bucket/myschool/student/class=101/';

相关文档