Ganos_FDW は外部データラッパー (FDW) の仕様に準拠しており、標準 SQL を使用して Object Storage Service (OSS) に格納された外部データをクエリできます。本ページでは、サーバーの定義、認証情報のマッピング、および外部テーブルの定義手順について説明します。これにより、ApsaraDB RDS for PostgreSQL インスタンスから OSS データを直接クエリできるようになります。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
Ganos_FDW 拡張が有効化された ApsaraDB RDS for PostgreSQL インスタンス
クエリ対象のデータファイルを格納した OSS バケット
OSS バケットへの読み取りアクセスを持つ AccessKey ペア(AccessKey ID および AccessKey Secret)。作成方法については、「AccessKey ペアの取得」をご参照ください。
ステップ 1:サーバーの定義
サーバーオブジェクトは、Ganos_FDW に対して外部データの保存場所およびアクセス方法を指定します。
CREATE SERVER <server_name>
FOREIGN DATA WRAPPER ganos_fdw
OPTIONS (
datasource 'OSS://<endpoint>/path/file',
format '<driver>',
open_options '<config>=<value>[ <config>=<value>]',
config_options '<config>=<value>[ <config>=<value>]');| パラメーター | 説明 |
|---|---|
datasource | データソースの OSS パスです。パス形式の詳細については、「オブジェクトストレージのパス」をご参照ください。 |
format | データソースを読み取る際に使用するドライバーです。指定しない場合、デフォルトのドライバーが使用されます。サポートされるドライバーの一覧については、「ST_FDWDrivers」をご参照ください。 |
open_options | データソースのオープン方法(例:エンコーディング設定)を制御するオプションです。 |
config_options | 接続設定用の環境変数です。 |
CREATE SERVER の完全な構文については、PostgreSQL ドキュメントをご参照ください。
例 — OSS 上の Shapefile を指すサーバーの定義:
CREATE SERVER myserver
FOREIGN DATA WRAPPER ganos_fdw
OPTIONS (
datasource 'OSS://<endpoint>/path/poly.shp',
format 'ESRI Shapefile',
open_options 'SHAPE_ENCODING=LATIN1',
config_options '');ステップ 2:ユーザーマッピングの作成
ユーザーマッピングは、データベースユーザーと、ステップ 1 で定義したサーバーへのアクセスに使用する OSS の認証情報を関連付けます。
CREATE USER MAPPING
FOR <user_name>
SERVER <server_name>
OPTIONS (
user '<oss_ak_id>',
password '<oss_ak_secret>');| パラメーター | 説明 |
|---|---|
SERVER | ステップ 1 で作成したサーバーの名前です。 |
user | ご利用の AccessKey ID です。 |
password | ご利用の AccessKey Secret です。 |
CREATE USER MAPPING の完全な構文については、PostgreSQL ドキュメントをご参照ください。
例:
CREATE USER MAPPING
FOR CURRENT_USER
SERVER myserver
OPTIONS (
user 'id',
password 'secret');ステップ 3:外部テーブルの作成
外部テーブルは、OSS のデータをデータベース内のクエリ可能なテーブルにマッピングします。データソースの構造に合わせて列を定義してください。
CREATE FOREIGN TABLE <table_name> (
column_name data_type
[, ...]
) SERVER <server_name>
OPTIONS (layer '<layer_name>');| パラメーター | 説明 |
|---|---|
SERVER | ステップ 1 で作成したサーバーの名前です。 |
layer | このテーブルに関連付けるデータソース内のレイヤーの名前です。 |
CREATE FOREIGN TABLE の完全な構文については、PostgreSQL ドキュメントをご参照ください。
例 — 名前が poly の Shapefile レイヤー向けの外部テーブルの作成:
CREATE FOREIGN TABLE example_table (
fid bigint,
name varchar,
age varchar,
value varchar
) SERVER myserver
OPTIONS (layer 'poly');テーブルを作成後、以下のクエリを実行して設定を検証します。
SELECT * FROM example_table LIMIT 10;ステップ 4:外部テーブル定義のインポート
各外部テーブルを個別に定義する代わりに、IMPORT FOREIGN SCHEMA を使用して、サーバーからすべてのテーブル定義を一括でインポートできます。
IMPORT FOREIGN SCHEMA ganos_fdw
[ { LIMIT TO | EXCEPT } ( table_name [, ...] ) ]
FROM SERVER <server_name>
INTO <local_schema>;例 — myserver から新しいローカルスキーマへすべての外部テーブル定義をインポート:
CREATE SCHEMA imp;
IMPORT FOREIGN SCHEMA ganos_fdw
FROM SERVER myserver
INTO imp;外部テーブルをインポートする際、リモートスキーマ名は常にganos_fdwです。インポートを実行する前に、CREATE SCHEMAを使用してローカルスキーマを作成してください。IMPORT FOREIGN SCHEMAの完全な構文については、PostgreSQL ドキュメントをご参照ください。