全部產品
Search
文件中心

Hologres:CREATE FOREIGN TABLE

更新時間:Jun 30, 2024

CREATE FOREIGN TABLE語句用於建立外部表格,當前支援建立MaxCompute、OSS、DLF、Hologres類型的外部表格。本文為您介紹CREATE FOREIGN TABLE的用法。

使用限制

僅Hologres V1.3及以上版本支援MaxCompute的三層模型模式(即在原先的Project和Table之間增加了一層Schema的概念),更多描述請參見Schema操作。如果您想在Hologres中使用MaxCompute的三層模型的專案建立外部表格,且您的Hologres版本較低,請您使用自助升級或加入HologresDingTalk交流群反饋,詳情請參見如何擷取更多的線上支援?

文法

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_nametable_name。如果您MaxCompute的Project是三層模型模式,您仍使用兩層模型的寫法調用,則會報錯,報錯範例如下。

failed to import foreign schema:Table not found - table_xxx
  • MaxCompute兩層模型:

    • project_name為MaxCompute的專案名稱。

    • table_name為需要查詢的MaxCompute表名稱。

  • MaxCompute三層模型:

    • project_name為MaxCompute的專案名稱和Schema名稱,格式為odps_project_name#odps_schema_name

    • table_name為需要查詢的MaxCompute表名稱。

說明

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外部表格資料,詳情請參見通過建立外部表格加速查詢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的資料類型映射

說明
  • DATETIME使用東八區時間作為系統的標準時間。取值範圍為0000年1月1日9999年12月31日,精確到毫秒。

  • TIMESTAMPTZ包含時區,取值範圍為4713BC294276AD,精確到微秒。

  • 當MaxCompute資料表中含有Hologres不支援的類型欄位時,如果Hologres不訪問該欄位,則可以正常查詢所支援的類型欄位。