腾讯云数据仓库 TCHouse-X CREATE TABLE USING DATASOURCE

这篇说说腾讯云数据湖计算DLC中CREATE TABLE语句的完整语法与参数,用于通过数据源定义新表,支持CSV、Parquet等格式及分区、分桶、CTAS等高级功能。 语法结构: 支持IF NOT EXISTS、列定义、数据源、OPTIONS、PARTITIONED BY、CLUSTERED BY、LOCATION、COMMENT、TBLPROPERTIES及AS SELECT子句。 参数说明: 涵盖表名、数据源、。

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

一、描述

CREATE TABLE 语句使用数据源定义一个新表。

二、语法

CREATE TABLE [ IF NOT EXISTS ] table_identifier [ ( col_name1 col_type1 [ COMMENT col_comment1 ], … ) ] USING data_source [ OPTIONS ( key1=val1, key2=val2, … ) ] [ PARTITIONED BY ( col_name1, col_name2, … ) ] [ CLUSTERED BY ( col_name3, col_name4, … ) [ SORTED BY ( col_name [ ASC | DESC ], … ) ] INTO num_buckets BUCKETS ] [ LOCATION path ] [ COMMENT table_comment ] [ TBLPROPERTIES ( key1=val1, key2=val2, … ) ] [ AS select_statement ]

注意:USING 子句和 AS SELECT 子句之间的子句可以以任意顺序出现。例如,可以在 TBLPROPERTIES 之后写 COMMENT table_comment。

三、参数说明

子句/关键字 用途 说明
table_identifier 表名定义 指定表名,可选择性地用数据库名进行限定。语法:[database_name.]table_name
USING data_source 数据源格式 指定创建表的输入格式(数据源),支持 CSV、TXT、ORC、JDBC、PARQUET 等
OPTIONS 数据源选项 数据源的配置选项,将注入到存储属性中
PARTITIONED BY 分区 根据指定的列对表进行分区
CLUSTERED BY 分桶 根据指定的列将创建的分区内的数据分桶为固定数量的桶。注意:分桶是一种优化技术,使用桶和分桶列来确定数据分区并避免数据混洗(Shuffle)
SORTED BY 桶内排序 指定桶内数据的排序顺序。可在列名后使用 ASC(升序)或 DESC(降序),未指定时默认为 ASC
INTO num_buckets BUCKETS 桶数量 指定分桶的数量,必须配合 CLUSTERED BY 子句一起使用
LOCATION 存储路径 表数据存储的目录路径,可以是分布式存储(如 HDFS、S3 等)上的路径
COMMENT 表注释 用于描述表的字符串字面量
TBLPROPERTIES 表属性 用于标记/配置表定义的键值对列表
AS select_statement CTAS 建表 使用 SELECT 语句查询结果的数据直接填充并创建表

四、示例

— 使用 CSV 数据源CREATE EXTERNAL TABLE student_ds1 (id INT, name STRING, age INT) USING CSV LOCATION 'cosn://<your_cos_bucket>/test_create_table_ds/student_ds1';– 使用 PARQUET 数据源CREATE EXTERNAL TABLE student_ds2 (id INT, name STRING, age INT) USING PARQUET LOCATION 'cosn://<your_cos_bucket>/test_create_table_ds/student_ds2';– 默认数据源(parquet)CREATE EXTERNAL TABLE student_ds3 (id INT, name STRING, age INT) LOCATION 'cosn://<your_cos_bucket>/test_create_table_ds/student_ds3';– 带 OPTIONSCREATE EXTERNAL TABLE student_ds4 (id INT, name STRING, age INT) USING PARQUET OPTIONS ('parquet.bloom.filter.enabled'='true') LOCATION 'cosn://<your_cos_bucket>/test_create_table_ds/student_ds4';– 带 COMMENT + TBLPROPERTIESCREATE EXTERNAL TABLE student_ds5 (id INT, name STRING, age INT) USING CSV COMMENT 'test table with comment' TBLPROPERTIES ('foo'='bar') LOCATION 'cosn://<your_cos_bucket>/test_create_table_ds/student_ds5';– 分区表 PARTITIONED BYCREATE EXTERNAL TABLE student_ds6 (id INT, name STRING, age INT) USING PARQUET PARTITIONED BY (age) LOCATION 'cosn://<your_cos_bucket>/test_create_table_ds/student_ds6';– IF NOT EXISTSCREATE EXTERNAL TABLE IF NOT EXISTS student_ds1 (id INT, name STRING, age INT) USING CSV LOCATION 'cosn://<your_cos_bucket>/test_create_table_ds/student_ds1';– INSERT 数据并验证INSERT INTO student_ds2 VALUES (1, 'Alice', 20), (2, 'Bob', 22);SELECT * FROM student_ds2;– CTAS(CREATE TABLE AS SELECT)+ LOCATIONCREATE TABLE student_ds_copy USING PARQUET LOCATION 'cosn://<your_cos_bucket>/test_create_table_ds/student_ds_copy_v2' AS SELECT * FROM student_ds2;– 使用 ORC 数据源CREATE EXTERNAL TABLE student_ds7 (id INT, name STRING, age INT) USING ORC LOCATION 'cosn://<your_cos_bucket>/test_create_table_ds/student_ds7';– 使用 JSON 数据源CREATE EXTERNAL TABLE student_ds8 (id INT, name STRING, age INT) USING JSON LOCATION 'cosn://<your_cos_bucket>/test_create_table_ds/student_ds8';– DESC TABLEDESC TABLE EXTENDED student_ds2;

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