外部データソースの 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 | はい | — | データソースのパスです。サポートされているパス形式については、「Object storage paths」をご参照ください。 |
server_name | いいえ | ganos_fdw_server | ganos_fdw_server作成する外部サーバーの名前です。省略した場合、サーバー名は になります。 |
driver | いいえ | データソースにアクセスするためのドライバーです。利用可能なドライバーを一覧表示するには、ST_FDWDrivers を呼び出してください。 | |
config_option | いいえ | '' | データソース接続用の環境変数です。 |
open_option | いいえ | '' | SHAPE_ENCODING=LATIN1データソースを開くためのドライバー固有のオプションです。たとえば、Latin-1 エンコーディングの ESRI シェープファイルの場合は を渡します。 |
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ドライバーとオープンオプションの指定
データソースで特定のドライバーまたはエンコーディングが必要な場合は、driver と open_option を設定します。 この例では、Latin-1 エンコーディングの ESRI Shapefile ディレクトリを登録します。
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を呼び出して、データソース形式の利用可能なドライバーを一覧表示します。