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查到。
参数描述
参数 |
描述 |
---|---|
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创建成功。