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; |
