数据仓库服务 GAUSSDB(DWS)-创建外表:创建外表
创建外表
创建外表的语法格式如下,详细的描述请参见CREATE FOREIGN TABLE (SQL on Hadoop or OBS)。
1 2 3 4 5 6 7 8 9 10 |
CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name
( [ { column_name type_name
[ { [CONSTRAINT constraint_name] NULL |
[CONSTRAINT constraint_name] NOT NULL |
column_constraint [...]} ] |
table_constraint [, ...]} [, ...] ] )
SERVER dfs_server
OPTIONS ( { option_name ' value ' } [, ...] )
DISTRIBUTE BY {ROUNDROBIN | REPLICATION}
[ PARTITION BY ( column_name ) [ AUTOMAPPED ] ] ;
|
例如,创建一个名为"product_info_ext_obs"的外表,对语法中的参数按如下描述进行设置:
- table_name
外表的表名。
- 表字段定义
- column_name:外表中的字段名。
- type_name:字段的数据类型。
多个字段用“,”隔开。
外表的字段个数和字段类型,需要与OBS上保存的数据完全一致。
- SERVER dfs_server
外表的外部服务器名称,这个server必须存在。外表通过设置外部服务器连接OBS读取数据。
此处应填写为参照创建外部服务器创建的外部服务器名称。
- OPTIONS参数
用于指定外表数据的各类参数,关键参数如下所示。
- “format”:表示对应的OBS服务上的文件格式支持"orc"、"parquet"、"carbondata"、"text"、"csv"、"json"。
- “foldername”:必选参数。数据源文件的OBS路径,此处仅需要填写“/桶名/文件夹目录层级/”。
- “totalrows”:可选参数。该参数不是导入的总行数。由于OBS上文件可能很多,执行analyze可能会很慢,通过“totalrows”参数,让用户来设置一个预估的值,使优化器能通过这个值做大小表的估计。一般预估值与实际值的数量级差不多时,查询效率较高。
- “encoding”:外表中数据源文件的编码格式名称,缺省为utf8。对于OBS外表此参数为必选项。
- DISTRIBUTE BY:
这个子句是必须的,对于OBS外表,当前只支持ROUNDROBIN分布方式。
表示外表在从数据源读取数据时,GaussDB(DWS)集群每一个节点随机读取一部分数据,并组成完整数据。
- 语法中的其他参数
其他参数均为可选参数,用户可以根据自己的需求进行设置,在本例中不需要设置。
根据以上信息,创建外表命令如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
DROP FOREIGN TABLE IF EXISTS product_info_ext_obs;
CREATE FOREIGN TABLE product_info_ext_obs
(
product_price integer not null,
product_id char(30) not null,
product_time date ,
product_level char(10) ,
product_name varchar(200) ,
product_type1 varchar(20) ,
product_type2 char(10) ,
product_monthly_sales_cnt integer ,
product_comment_time date ,
product_comment_num integer ,
product_comment_content varchar(200)
) SERVER obs_server
OPTIONS (
format 'orc',
foldername '/mybucket/demo.db/product_info_orc/',
encoding 'utf8',
totalrows '10'
)
DISTRIBUTE BY ROUNDROBIN;
|
建立包含分区列的OBS外表,product_info_ext_obs外表使用product_manufacturer字段作为分区键,obs/mybucket/demo.db/product_info_orc/路径下有如下分区目录:
分区目录1:product_manufacturer=10001
分区目录2:product_manufacturer=10010
分区目录3:product_manufacturer=10086
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
DROP FOREIGN TABLE IF EXISTS product_info_ext_obs;
CREATE FOREIGN TABLE product_info_ext_obs
(
product_price integer not null,
product_id char(30) not null,
product_time date ,
product_level char(10) ,
product_name varchar(200) ,
product_type1 varchar(20) ,
product_type2 char(10) ,
product_monthly_sales_cnt integer ,
product_comment_time date ,
product_comment_num integer ,
product_comment_content varchar(200) ,
product_manufacturer integer
) SERVER obs_server
OPTIONS (
format 'orc',
foldername '/mybucket/demo.db/product_info_orc/',
encoding 'utf8',
totalrows '10'
)
DISTRIBUTE BY ROUNDROBIN
PARTITION BY (product_manufacturer) AUTOMAPPED;
|
- 数据仓库服务GaussDB(DWS)_SQL on Anywhere
- DWS安全_数据仓库服务安全_DWS数据安全管理_DWS安全保障_DWS安全策略
- 调用GaussDB(DWS) API接口_数据仓库服务调用API_如何调用API_在DWS中调用API
- GAUSS(DWS)工具_gsql工具_DataStudio工具_DSC工具
- GaussDB(DWS)常用SQL_常用SQL命令_SQL语法
- DWS产品介绍_DWS产品优势_DWS功能_DWS使用场景_DWS是什么
- DWS资源管理_GaussDB(DWS)资源管理作用_DWS资源管控
- 数据库监控DMS_数据库智能运维_了解Auto Pilot_DMS_DWS节点监控
- 华为云资料 2021年 7月刊
- GaussDB(DWS)服务_什么是IoT数仓_如何使用IoT数仓