Topik ini menjelaskan cara menggunakan ekstensi tds_fdw yang disediakan oleh PostgreSQL untuk meminta data dari instance SQL Server.
Prasyarat
Instance RDS harus menjalankan PostgreSQL 11 atau versi lebih baru.
Jika versi mesin utama instance RDS memenuhi persyaratan tetapi ekstensi belum didukung, perbarui versi mesin minor instance RDS tersebut. Sebagai contoh, jika instance RDS Anda menjalankan PostgreSQL 17, versi mesin minor harus 20241030 atau lebih baru. Untuk informasi lebih lanjut, lihat Perbarui versi mesin minor.
Tambahkan blok CIDR dari virtual private cloud (VPC) tempat instance RDS berada ke daftar putih instance SQL Server yang ingin Anda sambungkan. Contoh:
172.xx.xx.xx/16.CatatanAnda dapat melihat blok CIDR dari VPC tempat instance RDS berada di halaman Database Connection pada konsol ApsaraDB RDS.

Informasi latar belakang
Ekstensi tds_fdw adalah Foreign Data Wrapper (FDW) yang disediakan oleh PostgreSQL. Ekstensi ini memungkinkan Anda terhubung dengan instance asing seperti Microsoft SQL Server yang menggunakan protokol Tabular Data Stream (TDS).
Untuk informasi lebih lanjut, lihat postgres_fdw.
Buat ekstensi tds_fdw
Setelah terhubung ke instance SQL Server, jalankan pernyataan berikut untuk membuat ekstensi tds_fdw:
create extension tds_fdw;Gunakan ekstensi
Jalankan pernyataan berikut untuk membuat server:
CREATE SERVER mssql_svr FOREIGN DATA WRAPPER tds_fdw OPTIONS (servername '<Endpoint used to connect to the SQL Server instance>', port '<Port used to connect to the SQL Server instance>', database 'tds_fdw_test', tds_version '7.1');CatatanAtur parameter
servernameke endpoint internal yang digunakan untuk terhubung ke instance SQL Server dan parameterportke port internal yang digunakan untuk terhubung ke instance SQL Server.Buat tabel asing. Gunakan salah satu metode berikut untuk membuat tabel asing:
Tentukan parameter table_name dan jalankan pernyataan berikut untuk membuat tabel asing:
CREATE FOREIGN TABLE mssql_table ( id integer, data varchar) SERVER mssql_svr OPTIONS (table_name 'dbo.mytable', row_estimate_method 'showplan_all');Tentukan parameter schema_name dan table_name dan jalankan pernyataan berikut untuk membuat tabel asing:
CREATE FOREIGN TABLE mssql_table ( id integer, data varchar) SERVER mssql_svr OPTIONS (schema_name 'dbo', table_name 'mytable', row_estimate_method 'showplan_all');Tentukan parameter query dan jalankan pernyataan berikut untuk membuat tabel asing:
CREATE FOREIGN TABLE mssql_table ( id integer, data varchar) SERVER mssql_svr OPTIONS (query 'SELECT * FROM dbo.mytable', row_estimate_method 'showplan_all');Tentukan nama kolom asing dan jalankan pernyataan berikut untuk membuat tabel asing:
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');
Jalankan pernyataan berikut untuk membuat pemetaan pengguna:
CREATE USER MAPPING FOR postgres SERVER mssql_svr OPTIONS (username 'sa', password '123456');Jalankan pernyataan berikut untuk mengimpor skema tabel asing:
IMPORT FOREIGN SCHEMA dbo EXCEPT (mssql_table) FROM SERVER mssql_svr INTO public OPTIONS (import_default 'true');