一、前置准备
根据你的数据存储位置,请完成以下相应准备工作:
二、存储于 COS 上的 Iceberg 表
1. 创建 TCHouse-X 实例,操作指南请参见 实例创建与销毁。
2. 准备对象存储资源:
·创建存储桶
·控制台创建
·API 创建
·上传文件
·控制台上传对象
·SDK/API-PUT Objects
·获取文件的 cosn 路径:cosn 路径为 'cosn://' 前缀 + 复制的路径名。
·相关工具概览:对象存储 > 工具概览
三、场景 1:仅创建外表,不导入数据至 TCHouse-X
本场景适用于将已有的 Iceberg 表元数据映射到 TCHouse-X,实现对外表的查询分析。
四、创建 Iceberg 外表
参考语法如下:
CREATE EXTERNAL TABLE [IF NOT EXISTS] [db_name.]table_name [COMMENT 'table_comment'] STORED AS ICEBERG [LOCATION 'table_path'] [TBLPROPERTIES ('key1'='value1', 'key2'='value2', …)]
五、场景 2:创建外表,并导入数据至 TCHouse-X 内表
本场景适用于将 Iceberg 外部存储系统中的数据迁移或同步到 TCHouse-X 的内部管理表,以实现数据的高效存储和查询优化。
六、Step 1:创建 Iceberg 外表
操作详情与“场景 1:仅创建外表,不导入数据至 TCHouse-X”完全相同。
七、Step 2:创建 TCHouse-X 内表
在执行数据导入之前,你需要创建用于存储数据的 TCHouse-X 内表。内表的 Schema 应与 Iceberg 外表的 Schema 保持一致。
八、Step 3:写入数据
使用 INSERT INTO…SELECT 语句,将数据从已创建的 Iceberg 外表查询出来,并写入 TCHouse-X 的内表。为了确保数据导入操作的性能和稳定性,强烈推荐使用离线(Batch)引擎执行数据写入任务。
/*+engine=batch*/insert into inner_item select * from external_item;
注意:说明:
九、数据类型映射
Iceberg 与 TCHouse-X 数据类型略有差异,其映射关系如下:
| Iceberg DATA Type | DATA Type in TCHouse-X |
| BOOLEAN | BOOLEAN |
| INT | INTEGER |
| LONG | BIGINT |
| FLOAT | FLOAT |
| DOUBLE | DOUBLE |
| DECIMAL(P, S) | DECIMAL(P, S) |
| DATE | DATE |
| TIME | Not supported |
| TIMESTAMP | TIMESTAMPNTZ |
| TIMESTAMPTZ | TIMESTAMPLTZ/TIMESTAMP |
| STRING | STRING |
| UUID | Not supported |
| FIXED(L) | Not supported |
| BINARY | Not supported |
| STRUCT | STRUCT (read only) |
| LIST | ARRAY (read only) |
| MAP | MAP (read only) |