您可以使用tds_fdw外掛程式訪問SQL Server資料庫的資料。
前提條件
執行個體大版本為RDS PostgreSQL 11或以上。
如執行個體大版本已滿足要求,但仍提示不支援,請升級核心小版本,具體操作,請參見升級核心小版本。
將RDS PostgreSQL的專用網路網段(例如
172.xx.xx.xx/16
)添加到SQL Server執行個體的白名單中,允許RDS PostgreSQL訪問。說明您可以在RDS PostgreSQL執行個體的資料庫連接中查看專用網路網段。
背景資訊
tds_fdw是PostgreSQL外部資料封裝器,可以串連到使用Tabular Data Stream(TDS)協議的資料庫,例如Microsoft SQL server。
詳細說明請參見postgres_fdw。
建立外掛程式
串連執行個體後建立tds_fdw外掛程式,命令如下:
create extension tds_fdw;
使用外掛程式
建立伺服器,樣本如下:
CREATE SERVER mssql_svr FOREIGN DATA WRAPPER tds_fdw OPTIONS (servername '<串連地址>', port '<串連連接埠>', database 'tds_fdw_test', tds_version '7.1');
說明伺服器定義中的
servername
必須配置為SQL Server的內網地址,port
必須配置為SQL Server的內網連接埠。建立外部表格。您可以通過多種方式建立外部表格:
使用table_name定義建立外部表格,樣本如下:
CREATE FOREIGN TABLE mssql_table ( id integer, data varchar) SERVER mssql_svr OPTIONS (table_name 'dbo.mytable', row_estimate_method 'showplan_all');
使用schema_name和table_name定義建立外部表格,樣本如下:
CREATE FOREIGN TABLE mssql_table ( id integer, data varchar) SERVER mssql_svr OPTIONS (schema_name 'dbo', table_name 'mytable', row_estimate_method 'showplan_all');
使用query定義建立外部表格,樣本如下:
CREATE FOREIGN TABLE mssql_table ( id integer, data varchar) SERVER mssql_svr OPTIONS (query 'SELECT * FROM dbo.mytable', row_estimate_method 'showplan_all');
使用遠程列名建立外部表格,樣本如下:
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');
建立使用者映射,樣本如下:
CREATE USER MAPPING FOR postgres SERVER mssql_svr OPTIONS (username 'sa', password '123456');
匯入外部模式,樣本如下:
IMPORT FOREIGN SCHEMA dbo EXCEPT (mssql_table) FROM SERVER mssql_svr INTO public OPTIONS (import_default 'true');