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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server建立Linked Server訪問OracleSQLServerOracle
- sqlserver建立linked server到redshift的方法SQLServer
- Sqlserver 如何truncate linked server的表SQLServer
- sqlserver的waitresource等待事件是linked server連結伺服器的問題SQLServerAI事件伺服器
- postgresql遠端不能訪問 - PostgreSQL9.4.5SQL
- Postgresql Linked server遠端伺服器取資料的執行計劃原理SQLServer伺服器
- PostgreSQL 9.6 配置遠端訪問SQL
- SQLServer 遊標簡介與使用說明SQLServer
- 【SQLServer】linked server "" was unable to begin a distributed transaction.SQLServer
- [zt] 使用SQL Server中的Linked Server及Remote ServerSQLServerREM
- Docker 使用者操作使用說明Docker
- winscp操作說明,winscp操作說明的詳細解讀
- Dynamic Parameters造成的linked server效能問題Server
- Redis 6.0 訪問控制列表ACL說明Redis
- Windows 訪問CentOS上Mysq配置說明WindowsCentOS
- 關於NTP SERVER的配置說明Server
- SQLSERVER 備份BCP命令說明SQLServer
- git 操作說明Git
- sqlserver鎖表的六種語法及with nolock的說明SQLServer
- SQL Server之旅(11):簡單說說sqlserver的執行計劃SQLServer
- SQLServer SYSPROCESSES表欄位解說明SQLServer
- 如何使用Linked Server連線Oracle與SQL ServerServerOracleSQL
- SqlServer觸發器的建立與使用SQLServer觸發器
- Bitbucket使用說明與SourceTree的使用
- 大牛直播SDK-Windows推送端使用說明Windows
- 外網訪問本地sqlserverSQLServer
- sql trace的使用說明一SQL
- Emacs 的 info 使用說明(轉)Mac
- 簡要的CKeditor使用說明
- java 關於操作Collection的一點說明Java
- SQL Server中“加鎖選項”的功能說明SQLServer
- 流程辦理操作說明
- Linked server和SSIS連線Oracle時的常見問題ServerOracle
- SQLServer控制使用者訪問許可權表SQLServer訪問許可權
- CSSCAN使用說明[字符集問題]CSS
- sqlserver2008中主要的系統表說明SQLServer
- jenkins構建後操作post build tasks外掛的使用說明JenkinsUI
- PostgreSQL的遠端資料操作—postgres_fdwSQL