文档首页 > > SQL语法参考> 创建DLI表> 使用DataSource语法创建DLI表

使用DataSource语法创建DLI表

分享
更新时间: 2019/10/24 GMT+08:00

功能描述

使用DataSource语法创建DLI表。

语法格式

1
2
3
4
5
6
7
CREATE TABLE [IF NOT EXISTS] [db_name.]table_name 
  [(col_name1 col_type1 [COMMENT col_comment1], ...)]
  USING file_format 
  [OPTIONS (key1=val1, key2=val2, ...)] 
  [PARTITIONED BY (col_name1, col_name2, ...)]
  [COMMENT table_comment]
  [AS select_statement];

关键字

  • IF NOT EXISTS:指定该关键字以避免表已经存在时报错。
  • USING:指定存储格式。
  • OPTIONS:指定建表时的属性名与属性值。
  • COMMENT:字段或表描述。
  • PARTITIONED BY:指定分区字段。
  • AS:使用CTAS创建表。

参数说明

表1 CREATE TABLE参数描述

参数

描述

db_name

Database名称,由字母、数字和下划线(_)组成。不能是纯数字,且不能以下划线开头。

table_name

Database中的表名,由字母、数字和下划线(_)组成。不能是纯数字,且不能以下划线开头。

col_name

以逗号分隔的带数据类型的列名。列名由字母、数字和下划线(_)组成。不能是纯数字,且至少包含一个字母。

col_type

字段类型。

col_comment

字段描述。

file_format

DLI表数据存储格式,file_format只可以是parquet,carbon两种格式。

table_comment

表描述。

select_statement

用于CTAS命令,将源表的select查询结果或某条数据插入到新创建的DLI表中。

表2 OPTIONS参数描述

参数

描述

默认值

multiLevelDirEnable

是否迭代查询子目录中的数据。当配置为true时,查询该表时会迭代读取该表路径中所有文件,包含子目录中的文件。

false

注意事项

  • 若没有指定分隔符,则默认为逗号(,)。
  • 创建分区表时,PARTITONED BY中指定分区列必须是表中的列,且必须在Column列表中指定类型。分区列只支持string, boolean, tinyint, smallint, short, int, bigint, long, decimal, float, double, date, timestamp类型。
  • 单表分区数最多允许7000个。
  • CTAS建表语句不能指定表的属性,不支持创建分区表。

示例

  • 创建一张名为src的表,该表包含字段key、value,其对应的数据类型分别是INT、STRING,并可根据需要指定属性。
    1
    CREATE TABLE src(key INT, value STRING) USING PARQUET OPTIONS('key1' = 'value1');
    
  • 创建一张名为tb_carbon的表,存储数据格式为carbon,该表包含字段key、value,其对应的数据类型分别是INT、STRING,并可根据需要指定属性。
    1
    CREATE TABLE tb_carbon(key INT, value STRING) USING CARBON OPTIONS('key1' = 'value1');
    
  • 以班级号(classNo)为分区字段,创建一张名为student的表,包含姓名(name)与分数(score)两个字段,存储格式为parquet。
    1
    CREATE TABLE student(name STRING, score INT, classNo INT) USING PARQUET OPTIONS('key1' = 'value1') PARTITIONED BY(classNo) ;
    
  • 以班级号(classNo)为分区字段,创建一张名为student的表,包含姓名(name)与分数(score)两个字段,存储格式为carbon。
    1
    CREATE TABLE student(name STRING, score INT, classNo INT) USING CARBON OPTIONS('key1' = 'value1') PARTITIONED BY(classNo) ;
    
  • 创建表t1,并将表t2的数据插入到表t1中。
    1
    CREATE TABLE t1 USING parquet AS select * from t2;
    
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区