CREATE FOREIGN TABLE语句用于创建外部表。本文为您介绍CREATE FOREIGN TABLE的用法。
使用限制
Hologres仅支持创建MaxCompute外部表。
语法
CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [
{ column_name data_type }
[, ... ]
] )
SERVER odps_server
[ OPTIONS ( option 'value' [, ... ] ) ]
参数说明如下表所示。
参数 | 描述 |
---|---|
SERVER | 连接MaxCompute外部数据源的服务器。 您可以直接调用Hologres底层已创建的名为odps_server的外部表服务器。详细原理请参见Postgres FDW。 |
OPTIONS | 您需要指定project_name和table_name。
|
说明 Hologres创建的外部表的字段类型必须与MaxCompute的字段类型一一对应。
示例
- 直接查询外部表数据。
Hologres新建外部表后,您可以直接查询MaxCompute外部表数据。示例SQL语句如下。
CREATE FOREIGN TABLE src_pt( id text, pt text) SERVER odps_server OPTIONS(project_name '<odps_project>', table_name '<odps_table>'); SELECT * FROM src_pt;
在Hologres中直接查询MaxCompute外部表数据,详情请参见通过建外表加速查询MaxCompute数据。
- 导入外部表并查询数据。
您可以导入MaxCompute的数据至Hologres,再进行查询。示例语句如下。
CREATE FOREIGN TABLE src_pt_odps( id text, pt text) SERVER odps_server OPTIONS (project_name'<odps_project>', table_name'<odps_table>'); BEGIN; CREATE TABLE src_pt( id text, pt text); COMMIT; INSERT INTO src_pt SELECT * FROM src_pt_odps;
导入MaxCompute数据至Hologres后,再进行查询,详情请参见使用SQL导入MaxCompute的数据至Hologres。
MaxCompute与Hologres的数据类型映射
创建MaxCompute外部表时,MaxCompute与Hologres的数据类型映射如下表所示。
MaxCompute数据类型 | Hologres数据类型 | 是否支持映射 |
---|---|---|
|
TEXT | 支持 |
BIGINT | INT8 | 支持 |
INT |
|
支持 |
SMALLINT |
说明 执行
set hg_enable_convert_type_for_foreign_table = true 定义数据类型为INT8。
|
不支持 |
TINYINT | 无 | 不支持 |
FLOAT |
|
支持 |
DOUBLE |
|
支持 |
BOOLEAN | BOOL | 支持 |
DATETIME | TIMESTAMPTZ | 支持 |
DECIMAL | NUMERIC | 支持 |
CHAR | 无 | 不支持 |
BINARY | 无 | 不支持 |
说明
DATETIME
使用东八区时间作为系统的标准时间。取值范围为0000年1月1日~9999年12月31日,精确到毫秒。TIMESTAMPTZ
包含时区,取值范围为4713BC~294276AD,精确到微秒。- 当MaxCompute数据表中含有Hologres不支持的类型字段时,如果Hologres不访问该字段,则可以正常查询所支持的类型字段。
在文档使用中是否遇到以下问题
更多建议
匿名提交