开发者社区> 问答> 正文

如何使用Create Table

如何使用Create Table

展开
收起
Puppet 2020-03-19 22:27:06 2908 0
1 条回答
写回答
取消 提交回答
  • 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;
    
    2020-03-19 22:28:11
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载