CREATE TABLE

最近更新时间:2026-05-20 14:11:21

我的收藏

描述

使用 USING tci 子句在 TCI catalog 中创建 TCI 表。支持设置主键(Primary Key)和排序键(Sort Order)等 TCI 特有属性。

语法

CREATE TABLE [ IF NOT EXISTS ] table_identifier
[ ( col_name1 col_type1 [ NOT NULL ] [ COMMENT col_comment1 ], ... ) ]
USING tci
[ PARTITIONED BY ( partition_expr [ , ... ] ) ]
[ COMMENT table_comment ]
[ TBLPROPERTIES ( 'key' = 'value', ... ) ]

参数说明

子句/关键字
用途
语法/示例
说明
table_identifier
表名标识
[ database_name. ] table_name
可选数据库名限定,指定目标表
USING tci
数据源格式
USING tci
必要子句,指定以 TCI 格式创建表
PARTITIONED BY
分区策略
详情请参见 PARTITIONED BY 子句
TCI 仅支持 identity 和 bucket(N, col) 两种变换
COMMENT
表描述
COMMENT '表描述文本'
可选,记录表的业务含义或备注
TBLPROPERTIES
表属性键值对
TBLPROPERTIES ('key'='value', ...)
设置主键、排序键 TCI 特性等配置

TCI 特有属性

通过 TBLPROPERTIES 可配置以下 TCI 特有参数:
属性
说明
示例
primary-key
指定主键列,用于保证行级唯一性
'primary-key' = 'id'
sort-order
指定排序键,写入数据时按该列自动排序
'sort-order' = 'name'
注意:
主键列必须定义为 NOT NULL。
排序键和主键可以在建表时通过 TBLPROPERTIES 设置,也可以后续通过 ALTER TABLE 修改。
TCI 会将 Spark 列类型自动转换为对应的 Iceberg 类型。
不支持 EXTERNAL 关键字 — 所有表均为内部管理表。
不支持 LOCATION 子句 — 存储路径由 TCHouse-X 自动分配和管理。

示例

创建 TCI 表基本用法

CREATE TABLE tci_create_basic (
id BIGINT,
name STRING,
age INT
) USING tci;

创建 TCI 表时指定主键和排序键

CREATE TABLE tci_create_pk_sort (
id BIGINT NOT NULL,
name STRING
) USING tci
TBLPROPERTIES (
'sort-order' = 'name',
'primary-key' = 'id'
);

创建 TCI 表时指定按列值分区

CREATE TABLE tci_partition_identity (
id BIGINT,
category STRING,
data STRING
) USING tci
PARTITIONED BY (category);

创建 TCI 表时指定分桶规则

CREATE TABLE tci_partition_bucket (
id BIGINT,
name STRING,
ts TIMESTAMP
) USING tci
PARTITIONED BY (bucket(16, id));

创建 TCI 表时增加 IF NOT EXISTS 幂等性检查

CREATE TABLE IF NOT EXISTS tci_create_if_not_exists (
id BIGINT
) USING tci;

创建 TCI 表时设置 COMMENT 和 TBLPROPERTIES

CREATE TABLE tci_create_with_comment (
id BIGINT NOT NULL COMMENT '唯一标识',
name STRING COMMENT '名称'
) USING tci
COMMENT 'TCI 测试表'
TBLPROPERTIES (
'primary-key' = 'id'
);

TCI 复杂 DDL 建表语法示例

CREATE TABLE tci_create_multi_col (
id BIGINT NOT NULL,
username STRING NOT NULL,
score DOUBLE,
active BOOLEAN,
created_at TIMESTAMP
) USING tci
TBLPROPERTIES (
'primary-key' = 'id',
'sort-order' = 'username'
);

TCI 表结构查询与验证

DESCRIBE tci_create_pk_sort;

SHOW CREATE TABLE tci_create_pk_sort;

SELECT * FROM tci_create_basic LIMIT 0;