更新时间:2024-12-25 GMT+08:00
分享

CREATE TABLE

命令功能

CREATE TABLE命令通过指定带有表属性的字段列表来创建Delta Table。

注意事项

  • 在该命令中,IF EXISTS和db_name是可选配置。
  • 在DLI中delta只支持OBS外表,通过表名创建且未指定location时将会失败。

命令格式

  • 通过表名创建Delta表

    CREATE[ OR REPLACE] TABLE [ IF NOT EXISTS] [database_name.]table_name

    [ (columnTypeList)]

    USING DELTA

    [ COMMENT table_comment ]

    [ PARTITIONED BY (partColumnList) ]

    LOCATION location_path

  • 通过delta.`Obs路径`创建Delta表

    CREATE[ OR REPLACE] TABLE [ IF NOT EXISTS] DELTA.`obs://bucket_name/tbl_path`

    [ (columnTypeList)]

    USING DELTA

    [ COMMENT table_comment ]

    [ PARTITIONED BY (partColumnList) ]

通过表名创建,能通过show tables查到该表,当前版本必须制定location,且只能指定为obs路径;通过delta.`Obs路径`创建,不能通过show tables查到。

参数描述

表1 CREATE TABLE参数描述

参数

描述

database_name

Database名称,由字母、数字和下划线(_)组成。

table_name

Database中的表名,由字母、数字和下划线(_)组成。

bucket_name

obs桶名称。

tbl_path

Delta表在obs桶中的存储位置。

columnTypeList

以逗号分隔的带数据类型的列表。列名由字母、数字和下划线(_)组成。

using

参数delta,定义和创建Delta table。

table_comment

表的描述信息。

partColumnList

分区字段列表,列名取自columnTypeList中的列名。

location_path

Delta表的存储位置,当前版本必须指定,且只支持obs路径,指定该路径Delta 表会创建为外表。

所需权限

  • SQL权限
    表2 CREATE TABLE所需权限列表

    权限描述

    数据库的CREATE_TABLE权限

  • 细粒度权限:dli:database:createTable
  • LakeFormation提供的元数据服务,权限配置详见LakeFormation文档。

示例

  • 通过表名创建非分区表
    create table if not exists delta_table0 (
    id int,
    name string,
    addr struct<priv:string,city:string>,
    price double
    ) using delta
    location 'obs://bucket_name0/db0/delta_table0';
  • 通过表名创建分区表
    create table if not exists delta_table0 (
    id bigint,
    name string,
    ts bigint,
    dt string,
    hh string
    ) using delta
    partitioned by (dt, hh)
    location 'obs://bucket_name0/db0/delta_table0';
  • 通过delta路径创建非分区表
    create table if not exists delta.`obs://bucket_name0/db0/delta_table0`(
    id int,
    name string,
    price double
    ) using delta;
  • 通过delta路径创建分区表
    create table if not exists delta.`obs://bucket_name0/db0/delta_table0` (
    id bigint,
    name string,
    ts bigint,
    dt string,
    hh string
    ) using delta
    partitioned by (dt, hh);
  • 通过create table like创建表
    create table delta_table2 like delta_table1 
    using delta
    location 'obs://bucket_name0/db0/delta_table2';

系统响应

Table创建成功。

相关文档