外部データソースから 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ドライバーとオープンオプションの指定
データソースが特定のドライバーやエンコーディングを必要とする場合は、driver と open_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を呼び出し、データソース形式で利用可能なドライバーを一覧表示します。