標籤:
環境:suse 11 ,64位的作業系統
unixODBC 版本:2.3.2
PostgreSQL 9.3.4
1 編譯安裝 unixODBC
下載 unixODBC :http://www.unixodbc.org/download.html
解壓編譯
tar -zxvf unixODBC-2.3.2.tar.gz cd unixODBC-2.3.2./configure --prefix=/opt/unixODBC
make && make install
安裝路徑設定在 /opt/unixODBC
2 下載postgresql 的odbc rpm 包
:http://rpm.pbone.net/index.php3/stat/4/idpl/23893919/dir/opensuse_11.x/com/unixODBC-2.2.12-200.123.1.x86_64.rpm.html
當然,還有很多其他系統版本的postgresql 的odbc 驅動,http://rpm.pbone.net/index.php3/stat/3/srodzaj/1/search/libodbcpsqlS.so.1%28%29%2864bit%29
3 安裝下載rpm 包
rpm -ivh unixODBC-2.2.12-200.123.1.x86_64.rpm
如果安裝時候說有依賴的rpm 沒有安裝,可以忽略預設的rpm ,強行安裝此rpm
rpm -ivh --nodeps unixODBC-2.2.12-200.123.1.x86_64.rpm
安裝後,驅動應該在 /usr/lib64/unixODBC
你可以自己手工find 一下,檢查odbc 的驅動存放在哪裡
find /usr/ -iname "*odbc*.so*" | grep psql
我這樣的顯示的是
/usr/lib64/unixODBC/libodbcpsqlS.so
/usr/lib64/unixODBC/libodbcpsql.so
PostgreSQL 情況
PostgreSQL 版本為9.3.4 ,資料庫為 foo ,使用使用者為 sdbadmin,服務連接埠為5432
PostgreSQL裡存在兩張表,一張是PostgreSQL 自身的表test ;
一張是PostgreSQL 的外部表格 chen,對接的是SequoiaDB 的資料來源(如何?PostgreSQL對接SequoiaDB,可以參考:http://www.sequoiadb.com/index.php?p=whitepaper_7)
4 配置unixODBC ,適配PostgreSQL 服務
修改odbcinst.ini檔案
vi /opt/unixODBC/etc/odbcinst.ini
odbcinst.ini
[ODBC]Trace = yesTraceFile = /opt/unixODBC/sql.logUsageCount = 2[PostgreSQLODBC]Description = PostgreSQL driver for linuxDriver = /usr/lib64/unixODBC/libodbcpsql.soSetup = /usr/lib64/unixODBC/libodbcpsqlS.soFileUsage = 1CPReuse = 5CPTimeout = 5UsageCount = 2
配置odbc.ini 檔案
vi /opt/unixODBC/etc/odbc.ini
odbc.ini
[Postgres]Driver = PostgreSQLODBCDescription = Test on PostgreSQLDatabase = fooServername = 192.168.1.155UserName = sdbadminPort = 5432ReadOnly = No
載入設定檔
/opt/unixODBC/bin/odbcinst -i -d -f /opt/unixODBC/etc/odbcinst.ini
5 啟動odbc 進行串連測試
/opt/unixODBC/bin/isql -v Postgres
查詢 test 表和 chen表
能成功查詢出來資料了
參考部落格:
http://www.unixodbc.org/odbcinst.html
http://linux.vbird.org/linux_basic/0520rpm_and_srpm.php
linux 搭建unixODBC ,並對接 PostgreSQL 9.3.4