全部产品
MaxCompute

表操作

更新时间:2017-06-07 13:26:11   分享:   

您如果想对表进行操作,既可以通过客户端使用常用命令进行操作,也可以通过大数据开发套件中可视化的数据表管理方便地对表进行收藏、申请权限、查看分区信息等操作,详情请参见:表详情页介绍

通过客户端使用常用命令进行表操作的详情如下:

Create Table

命令格式:

  1. CREATE TABLE [IF NOT EXISTS] table_name
  2. [(col_name data_type [COMMENT col_comment], ...)]
  3. [COMMENT table_comment]
  4. [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
  5. [LIFECYCLE days]
  6. [AS select_statement]
  7. CREATE TABLE [IF NOT EXISTS] table_name
  8. LIKE existing_table_name

行为:创建一张表

注解:

  • 表名与列名均对大小写不敏感;
  • 表名,列名中不能有特殊字符,只能用英文的 a-z, A-Z 及数字和下划线’_’,且以字母开头,名称的长度不超过 128 字节,否则报错;
  • 注释内容是长度不超过 1024 字节的有效字符串,否则报错;
  • 对于该命令更详细的介绍请参阅 创建表(CREATE TABLE);
  • [LIFECYCLE days] days 参数为生命周期时间,只接受正整数 。单位:天;

非分区表:自最后一次数据被修改开始计算,经过 days 天后数据仍未被改动,则此表无需用户干预,将会被 MaxCompute 自动回收(类似 drop table 操作)。

分区表:根据各分区的 LastDataModifiedTime 判断该分区是否该被回收;不同于非分区表,分区表的最后一个分区被回收后,该表不会被删除 。生命周期只能设定到表级别,不能在分区级设置生命周期 。

示例:

  1. CREATE TABLE IF NOT EXISTS sale_detail(
  2. shop_name STRING,
  3. customer_id STRING,
  4. total_price DOUBLE)
  5. PARTITIONED BY (sale_date STRING,region STRING); --如果没有同名表存在,创建一张分区表 sale_detail

Drop Table

命令格式:

  1. DROP TABLE [IF EXISTS] table_name;

行为:

  • 删除一张表
  • 如果不指定 IF EXISTS 选项而表不存在,则返回异常;若指定此选项,无论表是否存在,皆返回成功 。

描述:

  • table_name:要删除的表名;

示例:

  1. DROP TABLE sale_detail; -- 若表存在,成功返回;
  2. DROP TABLE IF EXISTS sale_detail; -- 无论是否存在sale_detail表,均成功返回;

Describe Table

命令格式:

  1. DESC <table_name>;

行为:

返回指定表的信息,具体返回包括:

  • Owner(表的属主);
  • Project(表所属的项目空间);
  • CreateTime(创建时间);
  • LastDDLTime(最后一次 DDL 操作时间);
  • LastModifiedTime(表中的数据最后一次被改动的时间);
  • InternalTable(表示被描述的对象是表,总是显示 YES);
  • Size(表数据所占存储容量压缩后的大小,压缩比一般为5倍,单位 Byte);
  • Native Columns(非分区列的信息,包括:列名,类型,备注);
  • Partition Columns(分区列信息,包括:分区名,类型,备注)。

参数:

  • table_name:表名或视图名称

示例:

  1. odps@ project_name>DESC sale_detail; -- 描述一张分区表
  2. +------------------------------------------------------------------------------------+
  3. | Owner: ALIYUN$odpsuser@aliyun.com | Project: test_project |
  4. | TableComment: |
  5. +------------------------------------------------------------------------------------+
  6. | CreateTime: 2014-01-01 17:32:13 |
  7. | LastDDLTime: 2014-01-01 17:57:38 |
  8. | LastModifiedTime: 1970-01-01 08:00:00 |
  9. +------------------------------------------------------------------------------------+
  10. | InternalTable: YES | Size: 0 |
  11. +------------------------------------------------------------------------------------+
  12. | Native Columns: |
  13. +------------------------------------------------------------------------------------+
  14. | Field | Type | Comment |
  15. +------------------------------------------------------------------------------------+
  16. | shop_name | string | |
  17. | customer_id | string | |
  18. | total_price | double | |
  19. +------------------------------------------------------------------------------------+
  20. | Partition Columns: |
  21. +------------------------------------------------------------------------------------+
  22. | sale_date | string | |
  23. | region | string | |
  24. +------------------------------------------------------------------------------------+

注解:

  • 上面给出的是在客户端中运行此命令的示例;
  • 如果是不带分区的表,将不会显示 Partition Columns 相关信息;
  • 如果描述的是一个视图(View),将不显示 InternalTable 选项,而是 VirtualView 选项,其值总是为 YES 。与此类似地,Size 选项将会被 ViewText 选项替代,表示 View 的定义,例如:select * from src 。关于视图的介绍请参考 创建视图

查看分区信息

命令格式:

  1. desc table_name partition(pt_spec)

行为:查看某个分区表具体的分区信息 。示例:

  1. odps@ project_name>desc meta.m_security_users partition (ds='20151010');
  2. +------------------------------------------------------------------------------------+
  3. | PartitionSize: 2109112 |
  4. +------------------------------------------------------------------------------------+
  5. | CreateTime: 2015-10-10 08:48:48 |
  6. | LastDDLTime: 2015-10-10 08:48:48 |
  7. | LastModifiedTime: 2015-10-11 01:33:35 |
  8. +------------------------------------------------------------------------------------+
  9. OK

Show Tables

命令格式:

  1. SHOW TABLES;

行为:列出当前项目空间下所有的表

示例:

  1. odps@ project_name>show tables;
  2. ALIYUN$odps_user@aliyun.com:table_name
  3. ......

注解:

  • 上面给出的是在客户端中运行此命令的示例;
  • ALIYUN 是系统提示符,表示用户是阿里云用户;
  • odps_user@aliyun.com 是用户名,表示该表的创建者;
  • table_name是表名 。

Show Partitions

命令格式:

  1. SHOW PARTITIONS <table_name>;

行为:列出一张表的所有分区;

参数:table_name:指定查询的表名称(表不存在或非分区表报错)。

示例:

  1. odps@ project_name>SHOW PARTITIONS table_name;
  2. partition_col1=col1_value1/partition_col2=col2_value1
  3. partition_col1=col1_value2/partition_col2=col2_value2

注解:

  • 上面给出的是在客户端中运行此命令的示例;
  • partition_col1 和 partition_col2 表示该表的分区列;
  • col1_value1,col2_value1,col1_value2,col2_value2 表示分区列对应的值 。
本文导读目录
本文导读目录
以上内容是否对您有帮助?