Foreign Data Wrapper(FDW)は外部データにアクセスするためのしくみです。OS上のファイルに直接アクセスする「file_fdw」と外部のPostgreSQLのテーブルにアクセスする「postgresql_fdw」が標準で提供されています。
非公式ですがOracleやMySQL、MongoDBなどのFDWもあり、それらもPostgreSQLのテーブルのようにアクセスできます。
🐮 FDWの利用手順
外部サーバの定義
CREATE SERVER
コマンドでアクセス先の外部サーバを定義します。
次の例はサーバpg_svr
、ポート5432
でアクセスできるPostgreSQLのDBdatabase_a
に対してremote_server
という外部サーバを定義する例です。
CREATE SERVER remote_server FOREIGN DATA WRAPPER postgresql_fdw OPTIONS (host 'pg_svr', port '5432', dbname 'postgres'); |
外部サーバのユーザーマップ定義
CREATE USER MAPPING
コマンドでローカルユーザーと外部サーバのユーザーを紐付けます。
さきほど定義した外部サーバremote_server
のリモートユーザーpostgres
、パスワード****
を設定する例です。
CREATE USER MAPPING FOR public SERVER remote_server option (user 'postgres', password '****') |
外部テーブルの作成
外部データにアクセスするためには、PostgreSQL上に外部テーブル(Foreign Table)を作成する必要があります。この外部テーブルの作成はIMPORT FOREIGN SCHEMA
コマンドを使います。
あらかじめ定義した外部サーバremote_server
のtable_a
をスキーマ情報を取得して、外部テーブルとして定義する例は次のとおりです。
IMPORT FOREIGN SCHEMA table_a FROM SERVER remote_server INTO table_a; |