CREATE FOREIGN TABLE语句用于创建外部表,当前支持创建MaxCompute、OSS、DLF、Hologres类型的外部表。本文为您介绍CREATE FOREIGN TABLE的用法。
使用限制
仅Hologres V1.3及以上版本支持MaxCompute的三层模型模式(即在原先的Project和Table之间增加了一层Schema的概念),更多描述请参见Schema操作。如果您想在Hologres中使用MaxCompute的三层模型的项目创建外部表,且您的Hologres版本较低,请您使用自助升级或加入Hologres钉钉交流群反馈,详情请参见如何获取更多的在线支持?。
语法
CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [
{ column_name data_type }
[, ... ]
] )
SERVER odps_server
[ OPTIONS ( option 'value' [, ... ] ) ]
参数说明如下表所示。
参数 | 描述 |
SERVER | 连接外部数据源的服务器。 您可以直接调用Hologres底层已创建的名为odps_server的外部表服务器。详细原理请参见Postgres FDW。 |
OPTIONS | 您需要指定project_name和table_name。如果您MaxCompute的Project是三层模型模式,您仍使用两层模型的写法调用,则会报错,报错样例如下。
|
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>'); --三层模型模式 CREATE FOREIGN TABLE src_pt( id text, pt text) SERVER odps_server OPTIONS(project_name '<odps_project>#<odps_schema>', table_name '<odps_table>'); SELECT * FROM src_pt;
在Hologres中直接查询MaxCompute外部表数据,详情请参见基于Foreign Table加速查询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导入。
MaxCompute与Hologres的数据类型映射
创建MaxCompute外部表时,MaxCompute与Hologres的数据类型映射请参见MaxCompute与Hologres的数据类型映射。
DATETIME
使用东八区时间作为系统的标准时间。取值范围为0000年1月1日~9999年12月31日,精确到毫秒。TIMESTAMPTZ
包含时区,取值范围为4713BC~294276AD,精确到微秒。当MaxCompute数据表中含有Hologres不支持的类型字段时,如果Hologres不访问该字段,则可以正常查询所支持的类型字段。