分区和列操作为您提供了变更MaxCompute中表的分区或列的操作方法,您可以根据实际业务场景执行相应操作。本文为您介绍如何添加或删除分区、添加或修改列及注释常用操作。
分区和列操作详情请参见分区和列操作。分区和列操作常用命令如下。
类型 | 功能 | 角色 | 操作入口 |
---|---|---|---|
添加分区 | 为已存在的分区表新增分区。 | 具备修改表权限(Alter)的用户 | 本文中的命令您可以在如下工具平台执行: |
删除分区 | 为已存在的分区表删除分区。 | ||
添加列或注释 | 为已存在的非分区表或分区表添加列或注释。 | ||
修改列名及注释 | 修改非分区表或分区表的列名或注释。 |
添加分区
为已存在的分区表新增分区。
- 限制条件
- MaxCompute单表支持的分区数量上限为6万个。
- 对于有多级分区的表,如果需要添加新的分区值,必须指明全部的分区。
- 仅支持新增分区值,不支持新增分区字段。
- 命令格式
alter table <table_name> add [if not exists] partition <pt_spec> [partition <pt_spec> partition <pt_spec>...];
- 参数说明
- table_name:必填。待新增分区的分区表名称。
- if not exists:可选。如果未指定if not exists而同名的分区已存在,会执行失败并返回报错。
- pt_spec:必填。新增的分区,格式为
(partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...)
。partition_col是分区字段,partition_col_value是分区值。分区字段不区分大小写,分区值区分大小写。
- 使用示例
- 示例1:给表sale_detail添加一个分区,用来存储2013年12月杭州地区的销售记录。
alter table sale_detail add if not exists partition (sale_date='201312', region='hangzhou');
- 示例2:给表sale_detail同时添加两个分区,用来存储2013年12月北京和上海地区的销售记录。
alter table sale_detail add if not exists partition (sale_date='201312', region='beijing') partition (sale_date='201312', region='shanghai');
- 示例3:给表sale_detail添加分区,仅指定一个分区字段sale_date,返回报错,需要同时指定2个分区字段sale_date和region。
alter table sale_detail add if not exists partition (sale_date='20111011');
- 示例1:给表sale_detail添加一个分区,用来存储2013年12月杭州地区的销售记录。
删除分区
为已存在的分区表删除分区。
- 命令格式
alter table <table_name> drop [if exists] partition <pt_spec>;
- 参数说明
- table_name:必填。待删除分区的分区表名称。
- if exists:可选。如果未指定if exists且分区不存在,则返回报错。
- pt_spec:必填。删除的分区。格式为
(partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...)
。partition_col是分区字段,partition_col_value是分区值。分区字段不区分大小写,分区值区分大小写。
- 使用示例
--从表sale_detail中删除2013年12月杭州分区的销售记录。 alter table sale_detail drop if exists partition (sale_date='201312',region='hangzhou');
添加列或注释
为已存在的非分区表或分区表添加列或注释。
- 命令格式
alter table <table_name> add columns (<col_name1> <type1> comment ['<col_comment>'][, <col_name2> <type2> comment '<col_comment>'...]);
- 参数说明
- table_name:必填。待新增列的表名称。添加的新列不支持指定顺序,默认在最后一列。
- col_name:必填。新增列的名称。
- type:必填。新增列的数据类型。
- col_comment:可选。新增列的注释。
- 使用示例
- 示例1:给表sale_detail添加两个列。
alter table sale_detail add columns (customer_name STRING, education BIGINT);
- 示例2:给表sale_detail添加两个列并同时添加列注释。
alter table sale_detail add columns (customer_name STRING comment '客户', education BIGINT comment '教育' );
- 示例1:给表sale_detail添加两个列。
修改列名及注释
修改非分区表或分区表的列名或注释。
- 命令格式
alter table <table_name> change column <old_col_name> <new_col_name> <column_type> comment '<col_comment>';
- 参数说明
- table_name:必填。需要修改列名以及注释的表名称。
- old_col_name:必填。需要修改的列名称。
old_col_name
必须是已存在的列。 - new_col_name:必填。新的列名称。表中不能有名为
new_col_name
的列。 - column_type:必填。列的数据类型。
- col_comment:可选。修改后的注释信息。内容最长为1024字节。
- 使用示例
--修改表sale_detail的列名customer_name为customer_newname,注释“客户”为“customer”。 alter table sale_detail change column customer_name customer_newname STRING comment 'customer';
在文档使用中是否遇到以下问题
更多建议
匿名提交