
# 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) \]*
  
![](https://support.huaweicloud.com/sqlref-delta-dli/public_sys-resources/note_3.0-zh-cn.png)
通过表名创建，能通过show tables查到该表，当前版本必须制定location，且只能指定为obs路径；通过delta.\`Obs路径\`创建，不能通过show tables查到。
#### 参数描述
表1CREATE 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权限
  表2CREATE 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创建成功。
