Close related #7389 Support create Iceberg external table in Doris. This is the first step to support Iceberg external table. ### Create Iceberg external table This pr describes two ways to create Iceberg external tables. Both ways do not require explicitly specifying column definitions, Doris automatically converts them based on Iceberg's column definitions. 1. Create an Iceberg external table directly ```sql CREATE [EXTERNAL] TABLE table_name ENGINE = ICEBERG [COMMENT "comment"] PROPERTIES ( "iceberg.database" = "iceberg_db_name", "iceberg.table" = "icberg_table_name", "iceberg.hive.metastore.uris" = "thrift://192.168.0.1:9083", "iceberg.catalog.type" = "HIVE_CATALOG" ); ``` 2. Create an Iceberg database and automatically create all the tables under that db. ```sql CREATE DATABASE db_name [COMMENT "comment"] PROPERTIES ( "iceberg.database" = "iceberg_db_name", "iceberg.hive.metastore.uris" = "thrift://192.168.0.1:9083", "iceberg.catalog.type" = "HIVE_CATALOG" ); ``` ### Show table creation 1. For individual tables you can view them with `help show create table`. ```sql mysql> show create table iceberg_db.logs_1; +--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | logs_1 | CREATE TABLE `logs_1` ( `level` varchar(-1) NOT NULL COMMENT "null", `event_time` datetime NOT NULL COMMENT "null", `message` varchar(-1) NOT NULL COMMENT "null" ) ENGINE=ICEBERG COMMENT "ICEBERG" PROPERTIES ( "iceberg.database" = "doris", "iceberg.table" = "logs_1", "iceberg.hive.metastore.uris" = "thrift://10.10.10.10:9087", "iceberg.catalog.type" = "HIVE_CATALOG" ) | +--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ``` 2. For Iceberg database, you can view it with `help show table creation`. ```sql mysql> show table creation from iceberg_db; +--------+---------+---------------------+---------------------------------------------------------+ | Table | Status | Create Time | Error Msg | +--------+---------+---------------------+---------------------------------------------------------+ | logs | fail | 2021-12-14 13:50:10 | Cannot convert unknown type to Doris type: list<string> | | logs_1 | success | 2021-12-14 13:50:10 | | +--------+---------+---------------------+---------------------------------------------------------+ 2 rows in set (0.00 sec) ``` This is a new syntax. Show table creation records in Iceberg database: Syntax: ```sql SHOW TABLE CREATION [FROM db] [LIKE mask] ```
2.1 KiB
2.1 KiB
title, language
| title | language |
|---|---|
| CREATE DATABASE | zh-CN |
CREATE DATABASE
Description
该语句用于新建数据库(database)
语法:
CREATE DATABASE [IF NOT EXISTS] db_name
[PROPERTIES ("key"="value", ...)];
- PROPERTIES
该数据库的附加信息,可以缺省。
1)如果创建 Iceberg 数据库,则需要在 properties 中提供以下信息:
其中
PROPERTIES ( "iceberg.database" = "iceberg_db_name", "iceberg.hive.metastore.uris" = "thrift://127.0.0.1:9083", "iceberg.catalog.type" = "HIVE_CATALOG" )iceberg.database是 Iceberg 对应的库名;
iceberg.hive.metastore.uris是 hive metastore 服务地址。
iceberg.catalog.type默认为HIVE_CATALOG。当前仅支持HIVE_CATALOG,后续会支持更多 Iceberg catalog 类型。
example
1. 新建数据库 db_test
```
CREATE DATABASE db_test;
```
2. 新建 Iceberg 数据库 iceberg_test
```
CREATE DATABASE `iceberg_test`
PROPERTIES (
"iceberg.database" = "doris",
"iceberg.hive.metastore.uris" = "thrift://127.0.0.1:9083",
"iceberg.catalog.type" = "HIVE_CATALOG"
);
```
keyword
CREATE,DATABASE