orz.conf

技術メモ✍

tds_fdwのインストール

Installing on CentOSのページを見てインストールしました。

EPELをインストール

yum install epel-release

TDSをインストール

yum install freetds freetds-devel

alpha版を除くと20180528現在は1.08が最新でした。2016のだけど。

export TDS_FDW_VERSION="1.0.8"

PostgreSQLはバージョン9.6にしています。

export POSTGRES_VERSION="9.6"
wget https://github.com/tds-fdw/tds_fdw/archive/v${TDS_FDW_VERSION}.tar.gz -O tds_fdw-${TDS_FDW_VERSION}.tar.gz
tar -xvzf tds_fdw-${TDS_FDW_VERSION}.tar.gz
cd tds_fdw-${TDS_FDW_VERSION}
PATH=/usr/pgsql-{POSTGRES_VERSION}/bin:$PATH make USE_PGXS=1
sudo PATH=/usr/pgsql-{POSTGRES_VERSION}/bin:$PATH make USE_PGXS=1 install

\dxでインストールしたEXTENSIONを確認出来ます。

続いてpostgresの設定です。
psqlで作業します。

postgres=# create extension tds_fdw;
CREATE EXTENSION

servernameはsql serverがインストールされているサーバを適宜記載

postgres=# create server TDS_TestDB foreign data wrapper tds_fdw options (servername 'localhost', port '1433', database 'TestDB', tds_version '4.2', character_set 'UTF-8');
CREATE SERVER

grantする

postgres=# grant usage on foreign server TDS_TestDB to postgres;
GRANT

sql serverの情報を記載

postgres=# create user mapping for postgres server TDS_TestDB options (username 'sa', password 'password');
CREATE USER MAPPING

sql serverのほうはMicroSoftのページの情報でテーブルを作っているとするとPostgreSQL側では下記の指定になります。

create foreign table t1 (id integer, name VARCHAR(50), quantity integer) server TDS_TestDB options (table 'Inventory');


下記サイトを参考にしました。
tdsのインストール
https://github.com/tds-fdw/tds_fdw

PostgreSQLの設定
https://www.openscg.com/bigsql/docs/tds_fdw/

MicroSoft
https://docs.microsoft.com/ja-jp/sql/linux/quickstart-install-connect-red-hat?view=sql-server-linux-2017