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不訪問該字段,則可以正常查詢所支持的類型字段。