920
阿里云
创建删除表__快速开始_大数据计算服务-阿里云
当用户被添加到项目空间并被赋予建表等权限后,就可以操作MaxCompute了。由于在MaxCompute中的操作对象(输入、输出)都是表,所以在处理数据之前,我们首先要创建表、分区。
创建表
语法格式:
CREATE TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
[LIFECYCLE days]
[AS select_statement]
CREATE TABLE [IF NOT EXISTS] table_name
LIKE existing_table_name
说明:
- 表名与列名均对大小写不敏感。
- 在创建表时,如果不指定if not exists选项而存在同名表,则返回出错;若指定此选项,则无论是否存在同名表,即使原表结构与要创建的目标表结构不一致,均返回成功。已存在的同名表的元信息不会被改动。
- 数据类型只能是:bigint,double,boolean,datetime及string。
- 表名,列名中不能有特殊字符,只能用英文的a-z,A-Z及数字和下划线_,且以字母开头,名称的长度不超过128字节。
- Partitioned by 指定表的分区字段,目前仅支持string类型,其他类型行为未定义。分区值不可以有双字节字符(如中文),必须是以英文字母a-z,A-Z开始后可跟字母数字,名称的长度不超过128字节。 允许的字符包括:空格 ‘ ‘,冒号’:’,下划线’_’,美元符’$’,井号’#’,点’.’,感叹号’!’和’@’,出现其他字符行为未定义。例如:”t”,”n”,”/”等。当利用分区字段对表进行分区时,新增分区、更新分区内数据和读取分区数据均不需要做全表扫描,可以提高处理效率。
- 注释内容是长度不超过1024字节的有效字符串。
- lifecycle指明此表的生命周期,单位:天。create table like语句不会复制源表的生命周期属性。
- 目前,在表中建的分区层次不能超过6级。一个表允许的分区个数支持按照具体的project配置,默认60,000个。
注意:
- 创建表的详细介绍请参考 创建表(CREATE TABLE) 。
- 添加分区请参考 添加及删除分区 。
- 生命周期的修改请参考 修改表的生命周期属性 。
创建表示例:
create table test1 (key string); -- 创建非分区表,表名test1,字段名key,数据类型string。
create table test2 (key bigint) partitioned by (pt string, ds string); --创建分区表
create table test3 (key boolean) partitioned by (pt string, ds string) lifecycle 100; -- 创建带有生命周期的表
create table test4 like test3; -- 除生命周期属性外,test3的其他属性(字段类型,分区类型等)均与test4完全一致
create table test5 as select * from test2;
-- 这个操作会创建test5,但分区,生命周期信息不会被拷贝到目标表中。
-- 此操作仅会将test2的数据复制到test5中(如果test2有数据的话,此示例中test2为空表,后续章节会介绍数据导入)。
这里我们介绍一个创建表的场景:假设需要创建一张用户表user,包括如下信息:
- user_id bigint类型,用户标识,唯一标识一个用户
- gender bigint 类型,性别 (0,未知;1,男;2,女)
- age bigint, 用户年龄
按照region(区域)和dt(日期)进行分区,生命周期为365天。建表语句如下:
CREATE TABLE user (
user_id BIGINT, gender BIGINT COMMENT '0 unknow,1 male, 2 Female', age BIGINT)
PARTITIONED BY (region string, dt string) LIFECYCLE 365;
获取表信息
当创建表成功之后,我们可以通过如下命令获取表的信息:
desc <table_name>;
例如,获取上述示例中表test3信息:
desc test3;
结果显示如下:
odps@ $odps_project>desc test3;
+------------------------------------------------------------------------------------+
| Owner: ALIYUN$maojing.mj@alibaba-inc.com | Project: $odps_project
| TableComment: |
+------------------------------------------------------------------------------------+
| CreateTime: 2015-09-18 12:26:57 |
| LastDDLTime: 2015-09-18 12:26:57 |
| LastModifiedTime: 2015-09-18 12:26:57 |
| Lifecycle: 100 |
+------------------------------------------------------------------------------------+
| InternalTable: YES | Size: 0 |
+------------------------------------------------------------------------------------+
| Native Columns: |
+------------------------------------------------------------------------------------+
| Field | Type | Label | Comment |
+------------------------------------------------------------------------------------+
| key | boolean | | |
+------------------------------------------------------------------------------------+
| Partition Columns: |
+------------------------------------------------------------------------------------+
| pt | string | |
| ds | string | |
+------------------------------------------------------------------------------------+
获取test4信息:
desc test4;
显示结果如下:
odps@ $odps_project>desc test4;
+------------------------------------------------------------------------------------+
| Owner: ALIYUN$maojing.mj@alibaba-inc.com | Project: $odps_project
| TableComment: |
+------------------------------------------------------------------------------------+
| CreateTime: 2015-09-18 12:27:09 |
| LastDDLTime: 2015-09-18 12:27:09 |
| LastModifiedTime: 2015-09-18 12:27:09 |
+------------------------------------------------------------------------------------+
| InternalTable: YES | Size: 0 |
+------------------------------------------------------------------------------------+
| Native Columns: |
+------------------------------------------------------------------------------------+
| Field | Type | Label | Comment |
+------------------------------------------------------------------------------------+
| key | boolean | | |
+------------------------------------------------------------------------------------+
| Partition Columns: |
+------------------------------------------------------------------------------------+
| pt | string | |
| ds | string | |
+------------------------------------------------------------------------------------+
您会发现,除生命周期属性外,test3的其他属性(字段类型,分区类型等)均与test4完全一致。获取表信息的更多介绍请参考 Describe Table 。您如果查看test2的表信息,pt,ds两个字段仅会作为普通列存在,而不是表的分区。
删除表
DROP TABLE [IF EXISTS] table_name;
示例,删除test2表:
drop table test2;
更多介绍请参考 删除表(DROP TABLE) 。
创建分区
当创建一张分区表之后,为了往该表里面导入不同分区数据,我们需要创建分区。命令如下:
alter table table_name add [if not exists] partition partition_spec
partition_spec:
: (partition_col1 = partition_col_value1, partition_col2 = partiton_col_value2, ...)
比如上面的例子,给用户表user添加区域为hangzhou,日期为20150923的分区,句子显示如下:
Alter table user add if not exists partition(region='hangzhou',dt='20150923');
删除分区
命令如下:
alter table table_name drop [if exists] partition_spec;
partition_spec:
: (partition_col1 = partition_col_value1, partition_col2 = partiton_col_value2, ...)
比如删除区域为hangzhou,日期为20150923的分区,语句如下:
Alter table user drop if exists partition(region='hangzhou',dt='20150923');
最后更新:2016-05-11 11:01:36
上一篇:
角色创建及授权__快速开始_大数据计算服务-阿里云
下一篇:
导入导出数据__快速开始_大数据计算服务-阿里云
GetUserMFAInfo__用户管理接口_RAM API文档_访问控制-阿里云
连接集群__集群管理_用户指南_容器服务-阿里云
解除签名密钥与API的绑定__后端签名密钥相关接口_API_API 网关-阿里云
图模型开发和调试__图模型_大数据计算服务-阿里云
ForwardEntrySetType__数据类型_API 参考_云服务器 ECS-阿里云
1. OSS快速开始__开放存储OSS 体验_体验馆-阿里云
阿里云大数据学院落户青岛西海岸新区!中国北方第一所!
查询可用地域列表__地域相关接口_API 参考_云服务器 ECS-阿里云
调用方式__API参考_高性能计算-阿里云
创建订阅通道__数据订阅_用户指南_数据传输-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云