Create Table 命令格式
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选项而存在同名表,则返回出错;如果指定此选项,则无论是否存在同名表,即使原表结构与要创建的目标表结构不一致,均返回成功。已存在的同名表的元信息不会被改动。 参数说明 table_name 创建表的表名。表名大小写不敏感,不能有特殊字符,只能用英文的a-z、A-Z、数字和下划线(_),且以字母开头,名称的长度不超过128字节,否则报错。
col_name 创建表的列名。列名大小写不敏感,不能有特殊字符,只能用英文的a-z、A-Z、数字和下划线(_),且以字母开头,名称的长度不超过128字节,否则报错。
col_comment 列注释内容。注释内容是长度不超过1024字节的有效字符串,否则报错。
table_comment 表注释内容。注释内容是长度不超过1024字节的有效字符串,否则报错。
data_type 列的数据类型。包括BIGINT、DOUBLE、BOOLEAN、DATETIME、DECIMAL和STRING等多种数据类型。更多信息请参见数据类型。
PARTITIONED BY 指定表的分区字段。MaxCompute 1.0版仅支持STRING类型。MaxCompute 2.0版对分区类型的支持进行了扩充,支持TINYINT、SMALLINT、INT、BIGINT、VARCHAR和STRING分区类型。当利用分区字段对表进行分区时,新增分区、更新分区内数据和读取分区数据均不需要做全表扫描,提高处理效率。 说明 分区值不能包含双字节字符(如中文),必须是以英文字母A-Z开头。A-Z开始后可跟字母数字,名称的长度不超过128字节。允许的字符包括空格、冒号(:)、下划线(_)、美元符($)、井号(#)、点(.)、感叹号(!)和(@),其他字符的行为未定义,例如(\t)、(\n)、(/)等 。 目前,在表中建的分区层次不能超过6级。一个表允许的分区个数支持按照具体的Project配置,默认60,000个。 LIFECYCLE 指明此表的生命周期,仅支持正整数。单位:天。 对于非分区表:自最后一次数据被修改开始计算,经过days天后数据仍未被改动,则此表无需您干预,将会被MaxCompute自动回收(类似drop table操作)。 对于分区表:根据各分区的LastDataModifiedTime判断该分区是否该被回收。不同于非分区表,分区表的最后一个分区被回收后,该表不会被删除。生命周期只能设定到表级别,不能在分区级设置生命周期。 说明 CREATE TABLE LIKE语句不会复制源表的生命周期属性。 示例 --如果没有同名表存在,创建一张分区表sale_deail。
shop_name STRING,
customer_id STRING,
total_price DOUBLE)
PARTITIONED BY (sale_date STRING,region STRING);
--创建非分区表test1。
create table test1 (key string);
--创建分区表test2。
create table test2 (key bigint) partitioned by (pt string, ds string);
--创建带有生命周期的表test3。
create table test3 (key boolean) partitioned by (pt string, ds string) lifecycle 100;
-- 除生命周期属性外,test4的其他属性(字段类型、分区类型等)均与test3完全一致。
create table test4 like test3;
-- 这个操作会创建test5,但分区生命周期信息不会被拷贝到目标表中。此操作仅会将test2的数据复制到test5中(如果test2有数据,此示例中test2为空表,后续章节会介绍数据导入)。
create table test5 as select * from test2;
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。