Use a extensão tds_fdw para acessar dados em um banco de dados SQL Server.
Pré-requisitos
A instância RDS PostgreSQL deve estar na versão principal do mecanismo 11 ou superior.
Se a instância atender ao requisito de versão principal do mecanismo, mas não oferecer suporte à extensão, atualize a versão secundária do mecanismo. Por exemplo, em uma instância RDS PostgreSQL 17, a versão secundária do mecanismo deve ser 20241030 ou posterior. Para obter instruções, consulte Atualizar a versão secundária do mecanismo.
-
Adicione o bloco CIDR da VPC da sua instância RDS PostgreSQL, como
172.xx.xx.xx/16, à lista de permissões de endereços IP da instância SQL Server.NotaNa página Database Connection da instância RDS PostgreSQL, confirme se o Network Type é VPC, anote o bloco CIDR da VPC, como
172.x.x.x/16, e verifique se a Intranet Port é5432.
Informações básicas
O tds_fdw é um wrapper de dados externos do PostgreSQL que se conecta a bancos de dados que usam o protocolo Tabular Data Stream (TDS), como o Microsoft SQL Server.
Para mais detalhes, consulte a documentação oficial do tds_fdw.
Crie a extensão
Conecte-se à instância e execute o seguinte comando:
create extension tds_fdw;
Usar a extensão
-
Crie um servidor externo. Exemplo:
CREATE SERVER mssql_svr FOREIGN DATA WRAPPER tds_fdw OPTIONS (servername '<endpoint>', port '<port>', database 'tds_fdw_test', tds_version '7.1');NotaNa definição do servidor, defina
servernamecomo o endpoint interno do SQL Server eportcomo a porta interna do SQL Server. -
Crie uma tabela externa. Use um dos métodos a seguir:
-
Use a opção
table_name. Exemplo:CREATE FOREIGN TABLE mssql_table ( id integer, data varchar) SERVER mssql_svr OPTIONS (table_name 'dbo.mytable', row_estimate_method 'showplan_all'); -
Especifique as opções
schema_nameetable_name. Exemplo:CREATE FOREIGN TABLE mssql_table ( id integer, data varchar) SERVER mssql_svr OPTIONS (schema_name 'dbo', table_name 'mytable', row_estimate_method 'showplan_all'); -
Use a opção
query. Exemplo:CREATE FOREIGN TABLE mssql_table ( id integer, data varchar) SERVER mssql_svr OPTIONS (query 'SELECT * FROM dbo.mytable', row_estimate_method 'showplan_all'); -
Mapeie colunas para nomes de colunas remotas. Exemplo:
CREATE FOREIGN TABLE mssql_table ( id integer, col2 varchar OPTIONS (column_name 'data')) SERVER mssql_svr OPTIONS (schema_name 'dbo', table_name 'mytable', row_estimate_method 'showplan_all');
-
-
Crie um mapeamento de usuário. Exemplo:
CREATE USER MAPPING FOR postgres SERVER mssql_svr OPTIONS (username 'sa', password '123456'); -
Importe um schema externo. Exemplo:
IMPORT FOREIGN SCHEMA dbo EXCEPT (mssql_table) FROM SERVER mssql_svr INTO public OPTIONS (import_default 'true');