腾讯云数据仓库 TCHouse-X CREATE TABLE AS SELECT

CREATE TABLE AS SELECT(简称 CTAS)基于查询结果创建一个新表并填充数据。新表将包含查询结果中的所有列和数据。

相关产品
腾讯云数据仓库 TCHouse-X 产品页,含版本规格、价格与购买入口。

一、描述

注意:说明:

注意:由于 TCI 提供的 SDK 暂时不支持 CTAS 的原子性保证操作,因此 CTAS 为非原子性操作(non-atomic)。如果 CTAS 执行过程中失败,可能会残留部分写入的数据。

二、语法

CREATE [ OR REPLACE ] TABLE table_identifier [ ( col_name1 col_type1 [ NOT NULL ], … ) ] USING tci [ PARTITIONED BY ( partition_expr [ , … ] ) ] [ TBLPROPERTIES ( 'key' = 'value', … ) ] AS select_statement

三、参数说明

子句/关键字 用途 说明
OR REPLACE / REPLACE TABLE 表存在时替换内容(RTAS) 替换保留历史快照记录,同时更新 Schema 和分区规范
select_statement 生成新表数据的 SELECT 查询 查询结果决定新表 Schema(除非显式指定列定义)

四、注意事项

·非原子性:TCI 当前不支持原子性保证,执行失败时可能有残留数据。

·CTAS 创建的新表不会自动继承源表的分区规范和表属性,需显式指定 PARTITIONED BY 和 TBLPROPERTIES。

·使用 RTAS 时,Schema 和分区规范会被替换;如不想改变 Schema,应改用 INSERT OVERWRITE。

·RTAS 中指定的表属性会与现有表属性合并,相同 key 会更新为新值。

·不支持 EXTERNAL 和 LOCATION 子句。

五、准备源表及数据

CREATE TABLE tci_ctas_source ( id INT, name STRING, score DOUBLE) USING tci;INSERT INTO tci_ctas_sourceVALUES (1, 'Alice', 95.5), (2, 'Bob', 88.0), (3, 'Charlie', 92.3);

六、CTAS 基本用法

CREATE TABLE tci_ctas_basicUSING tciAS SELECT * FROM tci_ctas_source;

七、CTAS 复杂用法:分区规则与排序键配置

CREATE TABLE tci_ctas_part_propUSING tciPARTITIONED BY (bucket(4, id))TBLPROPERTIES ('sort-order' = 'name')AS SELECT id, name, score FROM tci_ctas_source;

八、验证 CTAS 数据正确性

SELECT count(*) FROM tci_ctas_basic;SELECT * FROM tci_ctas_basic ORDER BY id;DESCRIBE tci_ctas_part_prop;

九、RTAS 使用示例

— 先创建目标表CREATE TABLE tci_rtas_target ( id INT, name STRING) USING tci;INSERT INTO tci_rtas_target VALUES (10, 'OldData');– RTAS 替换REPLACE TABLE tci_rtas_targetUSING tciAS SELECT id, name FROM tci_ctas_source;– 验证 RTAS 结果SELECT * FROM tci_rtas_target ORDER BY id;

赞 (0)
上一篇 4天前
下一篇 4天前