データソースから 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 です。 |
driver | データソースの読み取りに使用するドライバー。省略した場合は、デフォルトのドライバーが使用されます。サポートされているドライバーについては、「ST_FDWDrivers」をご参照ください。 |
config_option | 設定する環境変数。 |
open_option | データソースへのアクセス時に使用するオプション。たとえば、LATIN1 エンコーディングを使用する Shapefile を処理するには、SHAPE_ENCODING=LATIN1 を渡します。 |
tables | 外部テーブルとして登録するテーブル名の配列。この関数を呼び出す前に、利用可能なテーブル名を確認するには「ST_ForeignTables」をご参照ください。 |
prefix | 各外部テーブル名の先頭に付加するプレフィックス。複数のデータソースからテーブルを登録する際に、名前の競合を回避するために役立ちます。 |
説明
ST_RegForeignTables は、Foreign Data Wrapper (FDW) のセットアップ全体を単一の関数呼び出しにまとめます。指定された名前で外部サーバーを作成し、その後、対象のテーブルを外部テーブルとして登録します。戻り値は、Create server '<server_name>' successfully という形式の確認メッセージです。
登録後は、information_schema.foreign_tables をクエリして、作成された外部テーブルを確認できます。
使用例
デフォルトのサーバー名を使用してすべてのテーブルを登録
server_name を省略すると、デフォルトのサーバー名 ganos_fdw_server が使用されます。
SELECT ST_RegForeignTables('OSS://<ak_id>:<ak_secret>@<endpoint>/data');出力:
Create server 'ganos_fdw_server' successfullyカスタムサーバー名を使用してすべてのテーブルを登録
SELECT ST_RegForeignTables('OSS://<ak_id>:<ak_secret>@<endpoint>/data',
'my_server');出力:
Create server 'my_server' successfullyエンコーディングオプションを指定して Shapefile データを登録
Shapefile が UTF-8 以外の文字コードを使用している場合、open_option を使用してソースのエンコーディングを設定します。
SELECT ST_RegForeignTables('OSS://<ak_id>:<ak_secret>@<endpoint>/data',
'myserver',
'ESRI Shapefile',
'',
'SHAPE_ENCODING=LATIN1');出力:
Create server 'myserver' successfully特定のテーブルのみを登録
データソース内のすべてのテーブルではなく、指定されたテーブルのみを登録するには、cstring 配列を渡します。
SELECT ST_RegForeignTables('OSS://<ak_id>:<ak_secret>@<endpoint>/data',
'myserver',
'ESRI Shapefile',
'',
'SHAPE_ENCODING=LATIN1',
ARRAY['point', 'roads']::cstring[]);出力:
Create server 'myserver' successfully名前のプレフィックスを付けて特定のテーブルを登録
複数のデータソースからテーブルを登録する際の名前競合を回避するために、prefix を使用して各外部テーブル名の先頭に文字列を付加します。
SELECT ST_RegForeignTables('OSS://<ak_id>:<ak_secret>@<endpoint>/data',
'myserver',
'ESRI Shapefile',
'',
'SHAPE_ENCODING=LATIN1',
ARRAY['point', 'roads']::cstring[],
'myprefix');出力:
Create server 'myserver' successfully