Use a extensão tds_fdw para acessar dados em um banco de dados SQL Server.
Pré-requisitos
Certifique-se de que a sua instância do RDS PostgreSQL execute a versão principal 11 ou posterior do mecanismo.
Se uma instância atender ao requisito de versão principal, mas não for compatível com a extensão, atualize a versão secundária do mecanismo. Por exemplo, para uma instância do RDS PostgreSQL 17, a versão secundária do mecanismo deve ser 20241030 ou posterior. Para obter instruções, consulte Upgrade the minor engine version.
-
Adicione o bloco CIDR da VPC da sua instância do RDS PostgreSQL, como
172.xx.xx.xx/16, à lista de permissões de endereços IP da instância do SQL Server.NotaNa página Database Connection da sua instância do RDS PostgreSQL, confirme se o Network Type é VPC, anote o endereço IP e o bloco CIDR da VPC, como
172.x.x.x/16, e verifique se a Intranet Port é5432.
Informações de contexto
O tds_fdw é um foreign data wrapper do PostgreSQL para conexão com bancos de dados que utilizam 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 à sua instância e execute o seguinte comando:
create extension tds_fdw;
Usar a extensão
-
Crie um servidor externo. Por 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. Selecione um dos seguintes métodos:
-
Use a opção
table_name. Por 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. Por 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'); -
Para a opção
query, defina o valor desejado. Por 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. Por 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. Por exemplo:
CREATE USER MAPPING FOR postgres SERVER mssql_svr OPTIONS (username 'sa', password '123456'); -
Importe um schema externo. Por exemplo:
IMPORT FOREIGN SCHEMA dbo EXCEPT (mssql_table) FROM SERVER mssql_svr INTO public OPTIONS (import_default 'true');