すべてのプロダクト
Search
ドキュメントセンター

Hologres:CREATE FOREIGN TABLE

最終更新日:Feb 05, 2026

`CREATE FOREIGN TABLE` 文は、外部テーブルを作成するためのステートメントです。MaxCompute、OSS、DLF、Hologres などのデータソースに対して外部テーブルを作成できます。このトピックでは、`CREATE FOREIGN TABLE` 文の使用方法について説明します。

制限事項

Hologres V1.3 以降のバージョンのみが、MaxCompute の 3レイヤーモデルをサポートしています。3レイヤーモデルでは、プロジェクトとテーブルの間にスキーマレイヤーが追加されます。詳細については、「スキーマ操作」をご参照ください。3レイヤーモデルを使用する MaxCompute プロジェクトに対して外部テーブルを作成する場合、Hologres インスタンスのバージョンが V1.3 より前であれば、アップグレードが必要です。アップグレードに失敗した場合は、「アップグレード準備時の一般的なエラー」をご参照ください。また、Hologres の DingTalk グループに参加してフィードバックを投稿することもできます。詳細については、「オンラインサポートの利用方法」をご参照ください。

構文

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 プロジェクトが 3レイヤーモデルを使用しているにもかかわらず、2レイヤーモデルの構文を使用した場合、エラーが発生します。エラーメッセージの例を次に示します。

failed to import foreign schema:Table not found - table_xxx
  • MaxCompute 2レイヤーモデル:

    • project_name:MaxCompute プロジェクトの名前。

    • table_name:クエリ対象の MaxCompute テーブルの名前。

  • MaxCompute 3レイヤーモデル:

    • project_name:MaxCompute プロジェクトとスキーマの名前。odps_project_name#odps_schema_name のフォーマットを使用します。

    • table_name:クエリ対象の MaxCompute テーブルの名前。

説明

Hologres 外部テーブルのフィールドのデータ型は、MaxCompute テーブルの対応するフィールドのデータ型と一致している必要があります。

  • 外部テーブルから直接データをクエリする

    Hologres で外部テーブルを作成すると、MaxCompute 外部テーブルから直接データをクエリできます。次の SQL 文に例を示します。

    -- 2レイヤーモデル
    CREATE FOREIGN TABLE src_pt(
      id text, 
      pt text) 
    SERVER odps_server 
    OPTIONS(project_name '<odps_project>', table_name '<odps_table>');
    
    -- 3レイヤーモデル
    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;

    詳細については、「外部テーブルに基づく 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;

    詳細については、「SQL ステートメントを実行して MaxCompute から Hologres にデータをインポートする」をご参照ください。

MaxCompute と Hologres のデータ型のマッピング

MaxCompute と Hologres のデータ型のマッピングの詳細については、「MaxCompute と Hologres のデータ型のマッピング」をご参照ください。

説明
  • DATETIME は UTC+8 タイムゾーンを使用します。値の範囲は 0000年1月1日 から 9999年12月31日 までです。精度はミリ秒です。

  • TIMESTAMPTZ にはタイムゾーンが含まれます。値の範囲は 紀元前 4713年 から 西暦 294276年 までです。精度はマイクロ秒です。

  • MaxCompute テーブルに非対応のデータ型のフィールドが含まれている場合でも、その非対応のフィールドにアクセスしない限り、対応している他のフィールドをクエリできます。