首页 > 解决方案 > 使用外部数据包装器连接 MS SQL Server 和 PostgreSQL

问题描述

tds_fdw在 MS SQL Server 和 PostgreSQL 之间使用过。

我在 PostgreSql 中创建了一个外部服务器和外部表。当我从外部表中选择数据时,它也会运行 Mssql?还是 PostgreSQL 中的数据存储?

标签: sql-serverpostgresqlfreetdspostgres-fdw

解决方案


外部数据包装器只是查询远程数据的另一种方式。如果您创建外部表,则访问该表的任何 SELECT 都将转发到外部服务器(在您的情况下为 SQL Server)。

所以数据存储在 SQL Server 中。

当您从外部表中选择时,外部数据包装器会将 SELECT 语句发送到 SQL Server。然后 SQL Server 将处理查询并将数据发送回 Postgres 服务器。然后,外部数据包装器将数据返回给您的应用程序(连接到您的 Postgres 服务器)。FDW 可以将一些操作“推送”到外部服务器,这样 Postgres 就不需要处理它们了。我不知道 tds_fdw 实现的细节,但是像WHERE子句这样的东西通常会被推送到远程服务器,以便在 Postgres 端只处理相关数据。

从 MS SQL Server 的角度来看,FDW 只是另一个发送 SQL 查询的客户端。

当 MS SQL Server 正在处理请求时,Postgres(或更准确地说:为您的 Postgres 连接创建的后端)处于空闲状态(什么都不做)并等待 MS SQL Server 完成处理。


推荐阅读