一、前置条件
1. 创建 TCHouse-X 实例, 操作指南请参见 实例创建与销毁。
2. 创建对象存储 COS 桶、上传文件、获取文件 cosn 路径,操作指南可参阅:
·创建存储桶:
·控制台创建
·API 创建
注意:用于存储外表数据的 COS Bucket 必须为通用存储桶类型,目前暂不支持使用元数据加速桶。
·上传文件:
·控制台上传对象
·SDK/API-PUT Objects
·获取文件的 cosn 路径:
注意:说明:
注意:cosn 路径为 'cosn://' 前缀 + 复制的路径名。
·COS 工具概览:对象存储 > 工具概览
二、场景1:仅创建外表,不导入数据至 TCHouse-X
前置条件:已完成前置准备。
三、基于 Parquet、TextFile(CSV/TXT)文件创建外表
可参阅以下建表语法创建外表:
CREATE EXTERNAL TABLE [IF NOT EXISTS] [db_name.]table_name (col_name data_type [COMMENT 'col_comment'] [, …] ) [PARTITIONED BY (col_name data_type [COMMENT 'col_comment'], …)] [SORT BY ([column [, column …]])] [COMMENT 'table_comment'] [ROW FORMAT row_format] [STORED AS file_format] LOCATION 'cosn://bucket-name/path';Support DataType: TINYINT | SMALLINT | INT | BIGINT | BOOLEAN | FLOAT | DOUBLE | DECIMAL | STRING | CHAR | VARCHAR | TIMESTAMP Support DataType for HASH: SMALLINT | INT | BIGINT | DATE | CHAR | VARCHAR | STRINGSupport DataType for VALUE: BOOLEAN | TINYINT | SMALLINT | INT | BIGINT | FLOAT | DOUBLE | DECIMAL | CHAR | VARCHAR | STRING | DATE
如操作时无可用数据,可下载 demo parquet 文件后,上传至 COS。该 demo parquet 文件的建表语句如下:
CREATE EXTERNAL TABLE default.external_item ( i_item_sk INT, i_item_id STRING, i_rec_start_date DATE, i_rec_end_date DATE, i_item_desc STRING, i_current_price DECIMAL(7,2), i_wholesale_cost DECIMAL(7,2), i_brand_id INT, i_brand STRING, i_class_id INT, i_class STRING, i_category_id INT, i_category STRING, i_manufact_id INT, i_manufact STRING, i_size STRING, i_formulation STRING, i_color STRING, i_units STRING, i_container STRING, i_manager_id INT, i_product_name STRING)STORED AS PARQUETLOCATION 'cosn://your-bucket-name/your-file-path';
四、场景2:创建外表并导入数据至 TCHouse-X 内表
前置条件:已完成前置准备。
五、Step 1:创建外表
操作步骤与场景1相同,详情请参见 基于 Parquet、TextFile(CSV/TXT)文件创建外表。
六、Step 2:创建内表
如操作时无可用数据,可下载 demo parquet 文件、上传至 COS、创建外表。
若使用该 demo parquet 文件, 则创建内表的建表语句如下:
CREATE TABLE default.inner_item ( i_item_sk INT, i_item_id STRING, i_rec_start_date DATE, i_rec_end_date DATE, i_item_desc STRING, i_current_price DECIMAL(7,2), i_wholesale_cost DECIMAL(7,2), i_brand_id INT, i_brand STRING, i_class_id INT, i_class STRING, i_category_id INT, i_category STRING, i_manufact_id INT, i_manufact STRING, i_size STRING, i_formulation STRING, i_color STRING, i_units STRING, i_container STRING, i_manager_id INT, i_product_name STRING);
七、Step 3:写入数据
使用 INSERT INTO … SELECT … 方式将数据从外表-自管表查询出来写入内表,推荐在 SQL 前添加/*+engine=batch*/调用离线引擎执行数据写入。
如在 Step 1和 Step 2中使用 demo parquet 文件构建了外表和内表,则写入语句为:
/*+engine=batch*/insert into inner_item select * from external_item;
注意:说明: