更新时间: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/';
父主题: 分区相关