PostgreSQLは、外部データソースを参照するための多くの機能を提供しています。その中でも、odbc_fdw
(ODBC Foreign Data Wrapper) は、ODBCドライバーを介して他のデータベース(例えばSQL Server)に接続するための便利なツールです。この記事では、PostgreSQLで odbc_fdw
を使ってSQL Serverを参照する方法について説明します。
前提条件
- PostgreSQLがWindowsサーバインストールされていること
- SQL Serverがインストールされていること
- pgAdmin4がインストールされていること
PostgreSQLのodbc_fdw拡張をインストールします
odbc_fdw
をダウンロードする
https://www.postgresonline.com/journal/index.php?/archives/405-PostgreSQL-15-64-bit-for-Windows-FDWs.html- 解凍して、 PostgreSQLがインストールされたフォルダ(
C:\Pgoram Files\PostgreSQL\15
)に解凍した資材(lib,share)を上書きコピーする
ODBC Data Source (DSN) の設定
次に、SQL Serverへの接続を定義するODBC Data Sourceを設定します。
ODBC Data Source Administratorを使用して、新しいDSNを設定します。
- ODBC Data Source Administratorを開きます。
- “システム DSN” タブで “追加” をクリックします。
- “SQL Server” を選択して “完了” をクリックします。
- DSNの詳細を入力します(例:サーバー名、データベース名、認証情報)。





PostgreSQLでodbc_fdwをセットアップ
1. 拡張機能を有効化
まず、odbc_fdw
拡張機能を有効にします。
- pgAdmin4を起動して、PostgreSQLサーバを接続する
- 作成するDBを選択して右クリックメニューで、作成->拡張をクリックします
- 拡張作成画面で名前はodbc_fdwを選択して、保存する


2. 外部サーバーを作成
次に、ODBC DSNを使用して外部サーバーを作成します。
- DBのツリーから外部データラッパ->odbc_fdw->外部サーバを選択して右クリック、メニューから作成-> 外部サーバをクリックする
- 外部サーバ作成画面で名前を入力する
- オプションタブで先作成したdsnの情報を入力して保存する



3. ユーザー・マッピングの作成
外部サーバーへの接続に使用するユーザー・マッピングを作成します。
- 先作成した外部サーバー[sqlserverlink]を選択右クリックして、メニューから作成->ユーザマッピングをクリックする
- ユーザマッピング作成画面でマッピングするユーザ(postgres)を選択する
- オプションタブでリンク先のSQLServer接続情報(odbc_UID,odbc_PWD)を入力して保存する



4. 外部テーブルを作成
外部サーバー上のテーブルを参照するための外部テーブルを作成します。以下は、SQL Serverのテーブル yourtable
を参照する例です。
- 作成するデータベースからスキーマ->public->外部テーブルを選択右クリックして、メニューから作成->外部テーブルをクリックする
- 外部テーブル作成画面で、名前(任意テーブル名、ここはyour_linktable)を入力する
- 定義タブで、外部サーバを先作成した外部サーバ(sqlserverlink)を選択する
- 列タブで、列情報を入力する
- オプションタブで、参照先のテーブル情報と列名のマッピング情報(列名同じ場合入力不要)を入力して保存する





まとめ
以上が、PostgreSQLで odbc_fdw
を使ってSQL Serverを参照する方法です。この設定により、PostgreSQLから直接SQL Serverのデータをクエリすることができ、データ統合や分析が容易になります。ぜひ試してみてください。
コメント