postgresql端使用tds_fdw建立訪問sqlserver的linked server的操作說明
參考文件
https://www.postgresql.org/docs/11/postgres-fdw.html --postgres-fdw只能用於pg與pg直接的linked server
https://www.postgresql.org/message-id/CAA7biFNNDzmmL3O4fOm4h=Tf08BaFWS_sQXS98qHPHqNYKJyBw@mail.gmail.com
https://github.com/tds-fdw/tds_fdw
https://github.com/tds-fdw/tds_fdw/blob/master/InstallCentOS.md
這種方式有很多bug,不建議使用,因為sqlserver 2016居然沒有對應的tds版本號,參見http://www.freetds.org/userguide/choosingtdsprotocol.htm
1、PostgreSQL端安裝依賴包
[root@ecmpgdbdev ~]# sudo yum install epel-release
[root@ecmpgdbdev ~]# sudo yum install freetds-devel
[root@ecmpgdbdev ~]# sudo yum install gcc make wget
2、PostgreSQL端安裝tds_fdw
[root@ecmpgdbdev ~]# curl https://tds-fdw.github.io/yum/tds_fdw.repo -o /etc/yum.repos.d/tds_fdw.repo
[root@ecmpgdbdev ~]# yum install postgresql-11-tds_fdw
3、PostgreSQL端建立擴充包
-bash-4.2$ psql
postgres=# CREATE EXTENSION tds_fdw;
4、PostgreSQL端建立foreign server
CREATE SERVER mssql_svr FOREIGN DATA WRAPPER tds_fdw OPTIONS (servername '172.22.136.190', port '49787', database 'ECMDB', tds_version '7.4');
--sqlserver資料庫版本是2012-2014,則tds_version選項7.4,sqlserver 2016居然沒有對應版本
--servername指的是hostname或ip,不能是sqlserver的例項名稱
5、PostgreSQL端建立使用者對映,MAPPING是固定的不是postgresql的使用者名稱,不能把MAPPING換成其他的如sqlserveruser
CREATE USER MAPPING FOR postgres SERVER mssql_svr OPTIONS (username 'domain\sqluser', password 'X');
6、把sqlserver的dbo.Activity表對映到postgresql的public下
IMPORT FOREIGN SCHEMA dbo limit to (Activity) FROM SERVER mssql_svr INTO public OPTIONS (import_default 'true');
--查不到public.Activity,很奇怪
CREATE FOREIGN TABLE test1."Activity" (
"ActivityID" INTEGER NOT NULL,
"ActivityTypeID" INTEGER NOT NULL,
) SERVER mssql_svr OPTIONS (table_name 'dbo.Activity');
--可以查到test1."Activity",但是有如下報錯
WARNING: Table definition mismatch: Foreign source has column named , but target table does not. Column will be ignored.
WARNING: Table definition mismatch: Could not match local column ActivityID with column from foreign table
WARNING: Table definition mismatch: Could not match local column Description with column from foreign table
FDW的一些參考語句
select * from pg_extension;
select * from pg_foreign_data_wrapper;
select * from pg_foreign_server;
select * from pg_foreign_table;
select * from pg_user_mappings;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2695939/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sqlserver建立linked server到redshift的方法SQLServer
- Sqlserver 如何truncate linked server的表SQLServer
- sqlserver的waitresource等待事件是linked server連結伺服器的問題SQLServerAI事件伺服器
- Postgresql Linked server遠端伺服器取資料的執行計劃原理SQLServer伺服器
- winscp操作說明,winscp操作說明的詳細解讀
- Revit Server的注意要配置說明Server
- Docker 使用者操作使用說明Docker
- Redis 6.0 訪問控制列表ACL說明Redis
- Sqlserver linked server指向Excel報錯編號為7399和7303的解決方法SQLServerExcel
- 為SQL Server快照snapshot DB建立login訪問SQLServer
- SqlServer遊標的建立與使用SQLServer
- oradebug的使用說明
- sqlserver鎖表的六種語法及with nolock的說明SQLServer
- git 操作說明Git
- SqlServer觸發器的建立與使用SQLServer觸發器
- SQL Server建立使用者只能訪問指定資料庫和檢視SQLServer資料庫
- 外網訪問本地sqlserverSQLServer
- Sqlserver使用遊標迴圈,一個sql查詢出所有linked server伺服器上的某個job資訊SQLServer伺服器
- windows server 2012更改遠端埠,限制IP訪問WindowsServer
- jenkins構建後操作post build tasks外掛的使用說明JenkinsUI
- SqlServer儲存過程的建立與使用SQLServer儲存過程
- DataLakeAnalytics中OSSLOCATION的使用說明
- 關於 Jupyter 的使用說明
- SQL Server有關鎖升級的誤區說明SQLServer
- 大牛直播SDK-Windows推送端使用說明Windows
- 使用說明
- json-server 接入專案說明JSONServer
- zabbix-server-pgsql docker映象說明ServerSQLDocker
- C++ 訪問說明符詳解:封裝資料,控制訪問,提升安全性C++封裝
- PHP中$_SERVER的常用引數與說明——收錄篇PHPServer
- Oracle Table建立引數說明Oracle
- Webots和ROS的使用說明(譯)WebROS
- Spring的@Qualifier註解使用說明Spring
- PostgreSQL IP地址訪問配置SQL
- mssql sqlserver text資料型別專題說明SQLServer資料型別
- FreeSql 使用說明SQL
- postman 使用說明Postman
- QLExpress使用說明Express