

PostgreSQLのFDW外部サーバはpg_foreign_serverで一覧できる
この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。
やりたいこと
PostgreSQLに登録済みのFDW(Foreign Data Wrapper)の外部サーバを一覧したかった。
クエリ
select * from pg_foreign_server;これだけで、登録済みの外部サーバが全部出てくる。
出力例
srvname | srvowner | srvfdw | srvtype | srvversion | srvacl | srvoptions------------+----------+--------+---------+------------+----------+--------------------------------------------------- example_db | 16384 | 16401 | | | | {host=example.internal,port=5432,dbname=example}(1 row)出てくるカラム
| カラム | 内容 |
|---|---|
srvname |
サーバ名 |
srvowner |
所有者ロールのOID |
srvfdw |
紐づくFDW拡張のOID(pg_foreign_data_wrapper側のOID) |
srvtype / srvversion |
任意項目。設定していなければNULL |
srvacl |
権限(GRANT/REVOKEの結果) |
srvoptions |
host=example.internalのような接続オプションが配列で入っている。host、port、dbnameあたりが典型 |
srvfdwはOIDなので、FDW拡張名(postgres_fdwなど)まで見たいならpg_foreign_data_wrapperとJOINする必要がある。
関連するビュー
- 使っているFDW拡張自体の一覧は
pg_foreign_data_wrapper - 作成済みの外部テーブルは
pg_foreign_table - 標準規格準拠で見るなら
information_schema.foreign_serversもある。ただしこちらはsrvoptionsの中身が縦持ちのoption行になっていて見づらいので、実務ではpg_foreign_serverを直接叩いた方が早い
わかったこと
外部サーバの棚卸しをしたいだけなら、拡張のカタログを跨がずpg_foreign_server単体で十分。接続先のホストやポートまで一目で確認できる。