本文为您介绍表修改和查看的相关操作命令。
表修改和查看命令如下。
命令类别 | 类型 | 功能 | 角色 | 操作入口 |
修改表 | 修改表的所有人,即表Owner。 | 项目Owner。 | 本文中的命令您可以在如下工具平台执行: | |
修改表的注释内容。 | 具备修改表权限(Alter)的用户。 | |||
修改表的 | ||||
增加或去除表的聚簇属性。 | ||||
修改表的名称。 | ||||
清空指定的非分区表中的数据。 | ||||
清空普通表的列。 | ||||
查看表 | 查看MaxCompute内部表、外部表、聚簇表或Transactional表的信息。 | 具备读取表元信息权限(Describe)的用户。 | ||
查看表的DDL语句。 | ||||
列出项目下所有的内部表和外部表,或符合某些规则的内部表和外部表。 | 具备项目查看对象列表权限(List)的用户。 | |||
列出项目下所有的外部表,或符合某些规则的外部表。 |
修改表的所有人
修改表的所有人,即表Owner。
仅项目所有者(Project Owner)或具备Super_Administrator角色的用户可执行修改表Owner的命令。
命令格式
ALTER TABLE <table_name> CHANGEOWNER TO <new_owner>;
参数说明
参数 | 是否必填 | 说明 |
table_name | 是 | 待修改Owner的表名。 |
new_owner | 是 | 修改后的Owner账号。如果要修改Owner为RAM用户,格式为: 说明 修改表Owner为RAM用户,需确保RAM用户已加入到表所在的项目中。 |
使用示例
本文示例数据sale_detail表的创建,详情请参见创建sale_detail表。
将表sale_detail的所有人修改为ALIYUN$xxx@aliyun.com。
ALTER TABLE sale_detail CHANGEOWNER TO 'ALIYUN$xxx@aliyun.com';
将表sale_detail的所有人修改为名称为
ram_test
的RAM用户。ALTER TABLE sale_detail CHANGEOWNER TO 'RAM$13xxxxxxxxxxx:ram_test';
修改表的注释
修改表的注释内容。
命令格式
ALTER TABLE <table_name> SET COMMENT '<new_comment>';
参数说明
参数 | 是否必填 | 说明 |
table_name | 是 | 待修改注释的表的名称。 |
new_comment | 是 | 修改后的注释名称。 |
使用示例
ALTER TABLE sale_detail SET COMMENT 'new comment for table sale_detail';
您可以通过MaxCompute的DESC <table_name>
命令查看表中comment
的修改结果。
+------------------------------------------------------------------------------------+
| Owner: ALIYUN$sant****.aliyunid.com |
| Project: ani**** |
| Schema: default |
| TableComment: new comment for table sale_detail |
+------------------------------------------------------------------------------------+
修改表的最后更新时间
MaxCompute SQL提供TOUCH
操作用来修改表的LastModifiedTime
,可将表的LastModifiedTime
修改为当前时间。此操作会改变表的LastModifiedTime
的值,MaxCompute会认为表的数据有变动,生命周期的计算会重新开始。
命令格式
ALTER TABLE <table_name> TOUCH;
参数说明
table_name:必填。待修改表的修改时间的表名称。
使用示例
ALTER TABLE sale_detail TOUCH;
修改表的聚簇属性
对于分区表,MaxCompute支持通过ALTER TABLE
语句增加或者去除聚簇属性。
命令格式
增加表的Hash聚簇属性的语法格式如下。
ALTER TABLE <table_name> [CLUSTERED BY (<col_name> [, <col_name>, ...]) [SORTED BY (<col_name> [ASC | DESC] [, <col_name> [ASC | DESC] ...])] INTO <number_of_buckets> BUCKETS];
去除表的Hash聚簇属性的语法格式如下。
ALTER TABLE <table_name> NOT CLUSTERED;
增加表的Range聚簇属性,Bucket数不是必需的,可以省略,此时系统会根据数据量自动决定最佳的Bucket数目。语法格式如下。
ALTER TABLE <table_name> [RANGE CLUSTERED BY (<col_name> [, <col_name>, ...]) [SORTED BY (<col_name> [ASC | DESC] [, <col_name> [ASC | DESC] ...])] INTO <number_of_buckets> BUCKETS];
去除表或分区的Range聚簇属性的语法格式如下。
ALTER TABLE <table_name> NOT CLUSTERED; ALTER TABLE <table_name> <pt_spec> NOT CLUSTERED;
说明通过
ALTER TABLE
改变聚簇属性,只对分区表有效,非分区表一旦建立聚簇属性就无法改变。ALTER TABLE
语句适用于存量表,在增加了新的聚簇属性后,新的分区将按设置的聚簇属性存储。ALTER TABLE
只会影响分区表的新建分区(包括INSERT OVERWRITE
生成的),新分区将按新的聚簇属性存储,老数据分区的聚簇属性和存储保持不变。即在一张曾经做过聚簇属性设置的表上,关闭了聚簇属性,再增加聚簇设置,可以在新分区设置不同于之前的聚簇列、排序列及分桶数。由于
ALTER TABLE
只影响新分区,所以该语句不可以再指定分区。
参数说明
详情请参见创建和删除表。
修改表名
修改表的名称。仅修改表的名字,不改动表中的数据。
命令格式
ALTER TABLE <table_name> RENAME TO <new_table_name>;
参数说明
参数 | 是否必填 | 说明 |
table_name | 是 | 待修改名称的表。 |
new_table_name | 是 | 修改后的表名称。如果已存在与new_table_name同名的表,会返回报错。 |
使用示例
ALTER TABLE sale_detail RENAME TO sale_detail_rename;
查看表信息
查看MaxCompute内部表、外部表、聚簇表或Transactional表的信息。如果您需要查看表的详细数据信息,请参见SELECT语法。
命令格式
查看表信息。
DESC <table_name> [PARTITION (<pt_spec>)];
查看外部表、聚簇表或Transactional表信息以及内部表的扩展信息(例如列的非空属性)。
--查看外部表、聚簇表或Transactional表信息。也可以查看内部表的扩展信息。 DESC EXTENDED <table_name>;
参数说明
参数 | 是否必填 | 说明 |
table_name | 是 | 待查看表的名称。 |
pt_spec | 否 | 待查看分区表的指定分区。格式为 |
使用示例
下述示例中的数据均来源于创建表示例。
查看创建的test1表的信息。
DESC test1;
返回结果如下。
+------------------------------------------------------------------------------------+ | Owner: ALIYUN$maoXXX@alibaba-inc.com | Project: $project_name | | TableComment: | +------------------------------------------------------------------------------------+ | CreateTime: 2020-11-16 17:47:48 | | LastDDLTime: 2020-11-16 17:47:48 | | LastModifiedTime: 2020-11-16 17:47:48 | +------------------------------------------------------------------------------------+ | InternalTable: YES | Size: 0 | +------------------------------------------------------------------------------------+ | Native Columns: | +------------------------------------------------------------------------------------+ | Field | Type | Label | Comment | +------------------------------------------------------------------------------------+ | key | string | | | +------------------------------------------------------------------------------------+
查看创建的sale_detail表的信息。
DESC sale_detail;
返回结果如下。
+--------------------------------------------------------------------+ | Owner: ALIYUN$maoXXX@alibaba-inc.com | Project: $project_name | | TableComment: | +--------------------------------------------------------------------+ | CreateTime: 2017-06-28 15:05:17 | | LastDDLTime: 2017-06-28 15:05:17 | | LastModifiedTime: 2017-06-28 15:05:17 | +--------------------------------------------------------------------+ | InternalTable: YES | Size: 0 | +--------------------------------------------------------------------+ | Native Columns: | +--------------------------------------------------------------------+ | Field | Type | Label | Comment | +--------------------------------------------------------------------+ | shop_name | string | | | | customer_id | string | | | | total_price | double | | | +--------------------------------------------------------------------+ | Partition Columns: | +--------------------------------------------------------------------+ | sale_date | string | | | region | string | | +--------------------------------------------------------------------+
查看创建的sale_detail_ctas1表的详细信息。
DESC extended sale_detail_ctas1;
返回结果如下。
+------------------------------------------------------------------------------------+ | Owner: ALIYUN$maoXXX@alibaba-inc.com | Project: $project_name | | TableComment: | +------------------------------------------------------------------------------------+ | CreateTime: 2021-07-07 15:29:53 | | LastDDLTime: 2021-07-07 15:29:53 | | LastModifiedTime: 2021-07-07 15:29:53 | | Lifecycle: 10 | +------------------------------------------------------------------------------------+ | InternalTable: YES | Size: 0 | +------------------------------------------------------------------------------------+ | Native Columns: | +------------------------------------------------------------------------------------+ | Field | Type | Label | ExtendedLabel | Nullable | DefaultValue | Comment | +------------------------------------------------------------------------------------+ | shop_name | string | | | true | NULL | | | customer_id | string | | | true | NULL | | | total_price | double | | | true | NULL | | | sale_date | string | | | true | NULL | | | region | string | | | true | NULL | | +------------------------------------------------------------------------------------+ | Extended Info: | +------------------------------------------------------------------------------------+ | TableID: 98cb8a38733c49eabed4735173818147 | | IsArchived: false | | PhysicalSize: 0 | | FileNum: 0 | | StoredAs: AliOrc | | CompressionStrategy: normal | +------------------------------------------------------------------------------------+
sale_date
和region
两个字段仅会作为普通列存在,而不是表的分区。查看创建的sale_detail_ctas2表的信息。
DESC sale_detail_ctas2;
返回结果如下。
+--------------------------------------------------------------------+ | Owner: ALIYUN$xxxxx@alibaba-inc.com | Project: $project_name | | TableComment: | +--------------------------------------------------------------------+ | CreateTime: 2017-06-28 15:42:17 | | LastDDLTime: 2017-06-28 15:42:17 | | LastModifiedTime: 2017-06-28 15:42:17 | +--------------------------------------------------------------------+ | InternalTable: YES | Size: 0 | +--------------------------------------------------------------------+ | Native Columns: | +--------------------------------------------------------------------+ | Field | Type | Label | Comment | +--------------------------------------------------------------------+ | shop_name | string | | | | customer_id | string | | | | total_price | double | | | | sale_date | string | | | | region | string | | | +--------------------------------------------------------------------+
查看创建的sale_detail_like表的详细信息。
DESC extended sale_detail_like;
返回结果如下。
+------------------------------------------------------------------------------------+ | Owner: ALIYUN$xxxxx@alibaba-inc.com | Project: $project_name | | TableComment: | +------------------------------------------------------------------------------------+ | CreateTime: 2021-07-07 15:40:38 | | LastDDLTime: 2021-07-07 15:40:38 | | LastModifiedTime: 2021-07-07 15:40:38 | | Lifecycle: 10 | +------------------------------------------------------------------------------------+ | InternalTable: YES | Size: 0 | +------------------------------------------------------------------------------------+ | Native Columns: | +------------------------------------------------------------------------------------+ | Field | Type | Label | ExtendedLabel | Nullable | DefaultValue | Comment | +------------------------------------------------------------------------------------+ | shop_name | string | | | true | NULL | | | customer_id | string | | | true | NULL | | | total_price | double | | | true | NULL | | +------------------------------------------------------------------------------------+ | Partition Columns: | +------------------------------------------------------------------------------------+ | sale_date | string | | | region | string | | +------------------------------------------------------------------------------------+ | Extended Info: | +------------------------------------------------------------------------------------+ | TableID: 61782ff7713f426e9d6f91d5deeac99a | | IsArchived: false | | PhysicalSize: 0 | | FileNum: 0 | | StoredAs: AliOrc | | CompressionStrategy: normal | +------------------------------------------------------------------------------------+
除生命周期属性外,
sale_detail_like
的其他属性(字段类型、分区类型等)均与sale_detail
完全一致。说明通过
DESC <table_name>;
查看到的Size包含了在回收站的数据Size。如果您需要清空回收站,可以先执行PURGE TABLE <table_name>;
,然后再执行DESC <table_name>;
查看除回收站以外的数据大小。您也可以执行SHOW recyclebin;
查看本项目中回收站内的数据明细。查看创建的test_newtype表的信息。
DESC test_newtype;
返回结果如下。
| Native Columns: | +------------------------------------------------------------------------------------+ | Field | Type | Label | Comment | +------------------------------------------------------------------------------------+ | c1 | tinyint | | | | c2 | smallint | | | | c3 | int | | | | c4 | bigint | | | | c5 | float | | | | c6 | double | | | | c7 | decimal | | | | c8 | binary | | | | c9 | timestamp | | | | c10 | array<map<bigint,bigint>> | | | | c11 | map<string,array<bigint>> | | | | c12 | struct<s1:string,s2:bigint> | | | | c13 | varchar(20) | | | +------------------------------------------------------------------------------------+ OK
查看创建的Hash聚簇非分区表t1的信息。聚簇属性将显示在Extended Info中。
DESC extended t1;
返回结果如下。
+------------------------------------------------------------------------------------+ | Owner: ALIYUN$xxxxx@alibaba-inc.com | Project: $project_name | | TableComment: | +------------------------------------------------------------------------------------+ | CreateTime: 2020-11-16 18:00:56 | | LastDDLTime: 2020-11-16 18:00:56 | | LastModifiedTime: 2020-11-16 18:00:56 | +------------------------------------------------------------------------------------+ | InternalTable: YES | Size: 0 | +------------------------------------------------------------------------------------+ | Native Columns: | +------------------------------------------------------------------------------------+ | Field | Type | Label | ExtendedLabel | Nullable | DefaultValue | Comment | +------------------------------------------------------------------------------------+ | a | string | | | true | NULL | | | b | string | | | true | NULL | | | c | bigint | | | true | NULL | | +------------------------------------------------------------------------------------+ | Extended Info: | +------------------------------------------------------------------------------------+ | TableID: e6b06f705dc34a36a5b72e5af486cab7 | | IsArchived: false | | PhysicalSize: 0 | | FileNum: 0 | | StoredAs: AliOrc | | CompressionStrategy: normal | | ClusterType: hash | | BucketNum: 1024 | | ClusterColumns: [c] | | SortColumns: [c ASC] | +------------------------------------------------------------------------------------+ OK
查看创建的Hash聚簇分区表t2的信息。聚簇属性将显示在Extended Info中。
DESC EXTENDED t2;
返回结果如下。
+------------------------------------------------------------------------------------+ | Owner: ALIYUN$xxxxx@alibaba-inc.com | Project: $project_name | | TableComment: | +------------------------------------------------------------------------------------+ | CreateTime: 2017-12-25 11:18:26 | | LastDDLTime: 2017-12-25 11:18:26 | | LastModifiedTime: 2017-12-25 11:18:26 | | Lifecycle: 2 | +------------------------------------------------------------------------------------+ | InternalTable: YES | Size: 0 | +------------------------------------------------------------------------------------+ | Native Columns: | +------------------------------------------------------------------------------------+ | Field | Type | Label | Comment | +------------------------------------------------------------------------------------+ | a | string | | | | b | string | | | | c | bigint | | | +------------------------------------------------------------------------------------+ | Partition Columns: | +------------------------------------------------------------------------------------+ | dt | string | | +------------------------------------------------------------------------------------+ | Extended Info: | +------------------------------------------------------------------------------------+ | TableID: 91a3395d3ef64b4d9ee1d2852755 | | IsArchived: false | | PhysicalSize: 0 | | FileNum: 0 | | ClusterType: hash | | BucketNum: 1024 | | ClusterColumns: [c] | | SortColumns: [c ASC] | +------------------------------------------------------------------------------------+ OK
查看Range聚簇非分区表t3的信息。聚簇属性将显示在Extended Info中。
DESC extended t3;
返回结果如下。
+------------------------------------------------------------------------------------+ | Owner: ALIYUN$xxxxx@alibaba-inc.com | Project: $project_name | | TableComment: | +------------------------------------------------------------------------------------+ | CreateTime: 2020-11-16 18:01:05 | | LastDDLTime: 2020-11-16 18:01:05 | | LastModifiedTime: 2020-11-16 18:01:05 | +------------------------------------------------------------------------------------+ | InternalTable: YES | Size: 0 | +------------------------------------------------------------------------------------+ | Native Columns: | +------------------------------------------------------------------------------------+ | Field | Type | Label | ExtendedLabel | Nullable | DefaultValue | Comment | +------------------------------------------------------------------------------------+ | a | string | | | true | NULL | | | b | string | | | true | NULL | | | c | bigint | | | true | NULL | | +------------------------------------------------------------------------------------+ | Extended Info: | +------------------------------------------------------------------------------------+ | TableID: 38d170aca2684f4baadbbe1931a6ae1f | | IsArchived: false | | PhysicalSize: 0 | | FileNum: 0 | | StoredAs: AliOrc | | CompressionStrategy: normal | | ClusterType: range | | BucketNum: 1024 | | ClusterColumns: [c] | | SortColumns: [c ASC] | +------------------------------------------------------------------------------------+ OK
查看Range聚簇分区表t4的信息。聚簇属性将显示在Extended Info中。
DESC extended t4;
返回结果如下。
+------------------------------------------------------------------------------------+ | Owner: ALIYUN$xxxxx@alibaba-inc.com | Project: $project_name | | TableComment: | +------------------------------------------------------------------------------------+ | CreateTime: 2020-11-16 19:17:48 | | LastDDLTime: 2020-11-16 19:17:48 | | LastModifiedTime: 2020-11-16 19:17:48 | +------------------------------------------------------------------------------------+ | InternalTable: YES | Size: 0 | +------------------------------------------------------------------------------------+ | Native Columns: | +------------------------------------------------------------------------------------+ | Field | Type | Label | ExtendedLabel | Nullable | DefaultValue | Comment | +------------------------------------------------------------------------------------+ | a | string | | | true | NULL | | | b | string | | | true | NULL | | | c | bigint | | | true | NULL | | +------------------------------------------------------------------------------------+ | Partition Columns: | +------------------------------------------------------------------------------------+ | dt | string | | +------------------------------------------------------------------------------------+ | Extended Info: | +------------------------------------------------------------------------------------+ | TableID: 6ebc3432e283449188c861427bcd6ee4 | | IsArchived: false | | PhysicalSize: 0 | | FileNum: 0 | | StoredAs: AliOrc | | CompressionStrategy: normal | | ClusterType: range | | BucketNum: 0 | | ClusterColumns: [c] | | SortColumns: [c ASC] | +------------------------------------------------------------------------------------+ OK
查看非分区表t5是否为Transactional表。
说明推荐您使用MaxCompute客户端查看表是否为Transactional表,需要将MaxCompute客户端升级到0.35.4或以上版本。其他工具可能会存在版本升级未就绪的问题,导致查询结果不显示Transactional信息。
DESC extended t5;
返回结果如下。
+------------------------------------------------------------------------------------+ | Owner: ALIYUN$xxxxx@aliyun.com | Project: $project_name | | TableComment: | +------------------------------------------------------------------------------------+ | CreateTime: 2021-02-18 10:56:27 | | LastDDLTime: 2021-02-18 10:56:27 | | LastModifiedTime: 2021-02-18 10:56:27 | +------------------------------------------------------------------------------------+ | InternalTable: YES | Size: 0 | +------------------------------------------------------------------------------------+ | Native Columns: | +------------------------------------------------------------------------------------+ | Field | Type | Label | ExtendedLabel | Nullable | DefaultValue | Comment | +------------------------------------------------------------------------------------+ | id | bigint | | | true | NULL | | +------------------------------------------------------------------------------------+ | Extended Info: | +------------------------------------------------------------------------------------+ ... | Transactional: true | +------------------------------------------------------------------------------------+
查看分区表t6是否为Transactional表。
说明推荐您使用MaxCompute客户端查看表是否为Transactional表,需要将MaxCompute客户端升级到0.35.4或以上版本。其他工具可能会存在版本升级未就绪的问题,导致查询结果不显示Transactional信息。
DESC extended t6;
返回结果如下。
+------------------------------------------------------------------------------------+ | Owner: ALIYUN$xxxxx@test.aliyunid.com | Project: $project_name | | TableComment: | +------------------------------------------------------------------------------------+ | CreateTime: 2021-02-18 15:34:54 | | LastDDLTime: 2021-02-18 15:34:54 | | LastModifiedTime: 2021-02-18 15:34:54 | +------------------------------------------------------------------------------------+ | InternalTable: YES | Size: 0 | +------------------------------------------------------------------------------------+ | Native Columns: | +------------------------------------------------------------------------------------+ | Field | Type | Label | Comment | +------------------------------------------------------------------------------------+ | id | bigint | | | +------------------------------------------------------------------------------------+ | Partition Columns: | +------------------------------------------------------------------------------------+ | ds | string | | +------------------------------------------------------------------------------------+ | Extended Info: | +------------------------------------------------------------------------------------+ ... | Transactional: true | +------------------------------------------------------------------------------------+
查看建表语句
生成创建表的SQL DDL语句,方便您通过SQL重建Schema。
命令格式
SHOW CREATE TABLE <table_name>;
参数说明
table_name:必填。待查看建表语句的表的名称。
使用示例
--查看表sale_detail的建表语句。
SHOW CREATE TABLE sale_detail;
返回结果如下。
CREATE TABLE IF NOT EXISTS max****.`default`.sale_detail(shop_name STRING, customer_id STRING, total_price DOUBLE)
PARTITIONED BY (sale_date STRING, region STRING) STORED AS ALIORC TBLPROPERTIES ('columnar.nested.type'='true');
列出项目下的表和视图
列出项目下所有的表、外部表、视图和物化视图,或符合某些规则的表、外部表、视图和物化视图。
命令格式
--列出项目下所有的表和视图。
SHOW TABLES;
--列出项目下表名或视图名与chart匹配的表。
SHOW TABLES LIKE '<chart>';
使用示例
--列出项目下表名与sale*匹配的表。*表示任意字段。
SHOW TABLES LIKE 'sale*';
返回结果如下。
ALIYUN$account_name:sale_detail
......
--ALIYUN是系统提示符,表示您是阿里云主账号用户。如果您是阿里云RAM用户,系统提示符为RAM。
列出项目下外部表
列出项目下所有的外部表,或符合某些规则的外部表。
SHOW EXTERNAL TABLES
命令需要在MaxCompute客户端(odpscmd)0.43.0及以上版本中执行。
命令格式
--列出项目下所有的外部表。
SHOW EXTERNAL TABLES;
--列出项目下名称与external_chart匹配的外部表。
SHOW EXTERNAL TABLES LIKE '<external_chart>';
使用示例
--列出项目下名称与a*匹配的外部表。*表示任意字段。
SHOW EXTERNAL TABLES LIKE 'a*';
返回结果如下。
ALIYUN$account_name:a_et
......
--ALIYUN是系统提示符,表示您是阿里云主账号用户。如果您是阿里云RAM用户,系统提示符为RAM。
清空非分区表里的数据
将指定的非分区表中的数据清空。如果您需要清空分区表中单个或多个分区的数据,请参见清空分区数据。
命令格式
TRUNCATE TABLE <table_name>;
参数说明
table_name:必填。待清空数据的非分区表的名称。
清空列数据
使用clear column
命令清空普通表的列,将不再使用的列数据从磁盘删除并置NULL,从而达到降低存储成本的目的。
命令格式
ALTER TABLE <table_name> [partition ( <pt_spec>[, <pt_spec>....] )]
CLEAR COLUMN column1[, column2, column3, ...]
[without touch];
参数说明
参数 | 是否必填 | 说明 |
table_name | 是 | 将要执行清空列数据的表名称。 |
column | 是 | 将要被清空数据的列名称。 |
partition | 否 | 指定分区,若未指定,则表示操作所有分区。 |
pt_spec | 否 | 分区描述,格式为 |
without touch | 否 | 表示不更新 |
使用示例
-- 向sale_detail表增加分区
ALTER TABLE sale_detail ADD PARTITION (sale_date='2023', region='china') PARTITION (sale_date='2024', region='shanghai');
-- 向分区表中插入数据
INSERT INTO sale_detail PARTITION (sale_date='2023', region='china') VALUES ('s1','c1',100.1),('s2','c2',100.2),('s3','c3',100.3);
INSERT INTO sale_detail PARTITION (sale_date='2024', region='shanghai') VALUES ('null','c5',null),('s6','c6',100.4),('s7','c7',100.5);
-- 清空shop_name列
ALTER TABLE sale_detail partition(sale_date='2023', region='china') CLEAR COLUMN shop_name;
关于清空列数据的使用限制和示例详情请参见清空列数据。
相关文档
创建表和删除表相关操作,详情请参见创建和删除表。
对已有表分区执行操作,详情请参见分区操作。
对已有表的列执行操作,详情请参见列操作。
更新或删除Transactional表中的数据,请参见更新或删除数据(UPDATE | DELETE)。