
# 修改表分区位置
#### 功能描述
修改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/';
```
