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

ApsaraDB RDS:ST_RegForeignTables

最終更新日:Mar 29, 2026

外部データソースから 1 つ以上のテーブルを PostgreSQL の外部テーブルとして登録し、1 回の呼び出しで外部サーバーを作成します。

構文

cstring ST_RegForeignTables(
    cstring source,
    cstring server_name DEFAULT '',
    cstring driver DEFAULT '',
    cstring config_option DEFAULT '',
    cstring open_option DEFAULT '',
    cstring[] tables DEFAULT NULL,
    cstring prefix DEFAULT ''
);

パラメーター

パラメーター必須デフォルト説明
sourceはいデータソースのパス。サポートされているパス形式については、「オブジェクトストレージパス」をご参照ください。
server_nameいいえganos_fdw_server作成する外部サーバーの名前。省略した場合、サーバー名は ganos_fdw_server になります。
driverいいえデフォルトのドライバーデータソースにアクセスするためのドライバー。利用可能なドライバーを一覧表示するには、「ST_FDWDrivers」を呼び出します。
config_optionいいえ''データソース接続用に設定する環境変数。
open_optionいいえ''データソースを開くためのドライバー固有のオプション。たとえば、Latin-1 エンコーディングの ESRI シェープファイルの場合は SHAPE_ENCODING=LATIN1 を渡します。
tablesいいえNULL登録するテーブルの名前。利用可能なテーブル名を一覧表示するには、「ST_ForeignTables」を呼び出します。
prefixいいえ''各外部テーブル名の前に追加するプレフィックス。複数のデータソースからテーブルを登録する際の、名前の競合を避けるために使用します。

説明

ST_RegForeignTables は、PostgreSQL の外部データラッパー (FDW) のワークフロー (外部サーバーの作成と外部テーブルの登録) を 1 つの関数呼び出しにラップします。指定されたデータソースを読み取り、指定された名前で外部サーバーを作成し、検出されたテーブルを現在のデータベースに外部テーブルとして登録します。

登録後、information_schema.foreign_tables にクエリを実行して、どのテーブルが作成されたか、またその名前を確認します。

すべての例では、Object Storage Service (OSS) パスをデータソースとして使用します。<access_id><secret_key><Endpoint><bucket>、および path_to/file を実際の値に置き換えてください。

デフォルトのサーバー名ですべてのテーブルを登録

カスタムサーバー名が不要な場合は、server_name を省略します。この関数は ganos_fdw_server という名前の外部サーバーを自動的に作成します。

SELECT ST_RegForeignTables(
    'OSS://<access_id>:<secret_key>@[<Endpoint>]/<bucket>/path_to/file'
);
 Create server 'ganos_fdw_server' successfully

カスタムサーバー名ですべてのテーブルを登録

複数のデータソースを登録する場合は、それぞれを区別するために異なるサーバー名を使用します。

SELECT ST_RegForeignTables(
    'OSS://<access_id>:<secret_key>@[<Endpoint>]/<bucket>/path_to/file',
    'my_server'
);
 Create server 'my_server' successfully

ドライバーとオープンオプションの指定

データソースが特定のドライバーやエンコーディングを必要とする場合は、driveropen_option を設定します。この例では、Latin-1 エンコーディングの ESRI シェープファイルディレクトリを登録します。

SELECT ST_RegForeignTables(
    'OSS://<access_id>:<secret_key>@[<Endpoint>]/<bucket>/path_to/file',
    'myserver',
    'ESRI Shapefile',
    '',
    'SHAPE_ENCODING=LATIN1'
);
 Create server 'myserver' successfully

テーブルのサブセットを登録

データソースに複数のテーブルが含まれているが、その一部のみが必要な場合は、対象のテーブル名を配列として渡します。利用可能なテーブル名を事前に確認するには、ST_ForeignTables を呼び出します。

SELECT ST_RegForeignTables(
    'OSS://<access_id>:<secret_key>@[<Endpoint>]/<bucket>/path_to/file',
    'myserver',
    'ESRI Shapefile',
    '',
    'SHAPE_ENCODING=LATIN1',
    ARRAY['point', 'roads']::cstring[]
);
 Create server 'myserver' successfully

外部テーブル名へのプレフィックスの追加

外部テーブル名が既存のテーブルと競合する可能性がある場合は、prefix を使用して名前空間を付けます。

SELECT ST_RegForeignTables(
    'OSS://<access_id>:<secret_key>@[<Endpoint>]/<bucket>/path_to/file',
    'myserver',
    'ESRI Shapefile',
    '',
    'SHAPE_ENCODING=LATIN1',
    ARRAY['point', 'roads']::cstring[],
    'myprefix'
);
 Create server 'myserver' successfully

登録の確認

ST_RegForeignTables を呼び出した後、information_schema.foreign_tables にクエリを実行して、外部テーブルが作成されたことを確認します。

次のステップ

  • ST_ForeignTables を呼び出し、登録前にデータソース内の利用可能な全テーブルを一覧表示します。

  • ST_FDWDrivers を呼び出し、データソース形式で利用可能なドライバーを一覧表示します。