トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

PostgreSQLで他データベースにアクセスする

FDW(Foreign Data Wrapper)


 機能

dblink以外にFDWという機能が PostgreSQL 9.1から使えるようになった。
外部データベースのテーブルをPostgreSQLのテーブルのように扱えるようにする機能。

FDWでOracleと接続する

 機能

PostgreSQL 9.3 の oracle_fdwからINSERT、UPDATE、DELETEがサポートされた。
それ以前は、SELECTのみ。

 インストール

ダウンロード

http://laurenz.github.io/oracle_fdw/
からダウンロード
oracle_fdw-ORACLE_FDW_1_2_0.tar.gz(472)
Oracle Clientも必要なので、Oracle Client Instant をダウンロードしてインストールしておく。

コンパイル

sudo yum install postgresql-devel
tar zxvf  oracle_fdw-ORACLE_FDW_1_2_0.tar.gz
cd oracle_fdw-ORACLE_FDW_1_2_0
make
sudo make install

pg_configが見つからない場合は

find / -name pg_config

で探して、ディレクトリにパスを通す。

 export PATH=${PATH}:/usr/pgsql-9.4/bin

など。

起動スクリプト修正

PostgreSQLのプロセスにOracleライブラリのパスを教える必要がある。

sudo vim /etc/sysconfig/postgresql

LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib/

postgresql起動スクリプトを作成する。
本来の起動スクリプトを読み込んでからカスタマイズを書く。
Environmentで直接指定してもいいけど、環境変数ファイルを指定しておく。

sudo vim /etc/systemd/system/postgresql.service

.include /lib/systemd/system/postgresql.service

[Service]
EnvironmentFile=/etc/sysconfig/postgresql

systemdでない場合は、postgresユーザの .bashrcに

export LD_LIBRARY_PATH=/usr/lib/oracle/10.2.0.4/client64/lib/

としてもよい。

拡張読み込み

postgresql内にoracle_fdwの拡張を読み込む。

psql -U postgres
CREATE EXTENSION oracle_fdw;

もし、ここでエラーが出る場合は、SELinuxまわりかライブラリのパス指定にミスがある可能性がある。

 外部テーブルの定義

リモートデータベース名は任意の名前。

リモートデータベースを作成する

create server リモートデータベース名 foreign data wrapper oracle_fdw options (dbserver '//xxx.xxx.xxx.xxx:1521/XE');

ユーザマッピングの作成

create user mapping for postgresqlのユーザ名 server リモートデータベース名 options(user 'oracleのユーザ', password 'oracleのパスワード');

外部テーブルの作成

create foreign table テーブル名 (
           a date,
           b date,
           c text,
           d text) server リモートデータベース名 options(schema 'oracleのスキーマ', table 'oracleのテーブル');

テーブル名は大文字、小文字を識別するので注意

スキーマごとのインポート

テーブルを一つ一つマッピングせずに、スキーマをまるごとリンクできる。
(9.5以降)

IMPORT FOREING SCHEMA リモートスキーマ名 FROM SERVER リモートデータベース名 INTO ローカルスキーマ名;



[カテゴリ: データベース > Postgresql]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2017年08月23日 19時40分26秒