PostgreSQL從9.x開始支持所謂的外表的功能,就是在PostgreSQL中通過安裝一些擴展再進行一些配置可以在本地建立一個外表映射到其他不同類型的數據庫(可以大致理解為跨越PostgreSQL和其他類型數據庫的 dblink)
今天我們介紹一下在PostgreSQL中通過tds_fdw擴展來映射Sqlserver數據庫的方法
環境:ubunut14,postgresql9.3,sqlserver2005
fdw本質上是PostgreSQL的擴展,它不能直接和其他的數據庫進行通信,所以必須安裝能夠和其他數據庫服務器通信的客戶端(例如mysqlClient,oracleClient,freetds等)
--安裝freetds
apt-get install libsybdb5 freetds-dev freetds-common
--安裝PostgreSQL
apt-get install postgresql-9.3 postgresql-client-9.3 postgresql-server-dev-9.3
--下載、上傳到服務器,然后編譯(可以放在任何一個目錄中):
git clone https://github.com/GeoffMontee/tds_fdw.git
cd tds_fdw
make USE_PGXS=1
make USE_PGXS=1 install
--創建插件(在pgAdmin中執行)
CREATE EXTENSION tds_fdw
--創建server(在pgAdmin中執行)
CREATE SERVER server
FOREIGN DATA WRAPPER tds_fdw
OPTIONS (servername '數據庫IP',character_set 'UTF-8', port '1433');
--創建映射(在pgAdmin中執行)
CREATE USER MAPPING FOR postgres
SERVER server
OPTIONS (username '數據庫用戶名', password '數據庫密碼');
--創建外表
CREATE FOREIGN TABLE EXT_test (
ID2 int NOT NULL ,
Name varchar(255) NOT NULL ,
Code varchar(255) NULL
)
SERVER server
OPTIONS (database '數據庫名', query 'select ID2 ,Name,Code from Project');
--查詢數據
select * from EXT_test;
--刪除外表
drop FOREIGN table EXT_Project
PS:
tds_fdw項目的地址:https://github.com/GeoffMontee/tds_fdw
mysql_fdw項目地址:https://github.com/dpage/mysql_fdw
