如何使用Create Table?

如何使用Create Table?

请先 登录 后评论

1 个回答

江帅帅 | 奈学教育 - 架构师
擅长:Java,Python

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;
请先 登录 后评论
  • 1 关注
  • 0 收藏,177 浏览
  • NX小编 提出于 2020-07-28 14:23

相似问题