

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Aurora PostgreSQL 相容與異質資料庫的整合
<a name="heterogeneous-databases"></a>

若要將 Aurora PostgreSQL 相容與遠端 SQL Server 資料庫整合，請使用表格式資料串流外部資料包裝函式 (`tds_fdw`) 延伸。透過使用 `tds_fdw`擴充功能，您可以實作聯合查詢功能，以與任何遠端 SQL Server 型資料庫互動，無論是在內部部署，還是在 [Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) 上受管或自我管理。`tds_fdw` 延伸模組適用於所有目前支援的 Amazon RDS for PostgreSQL 和 Aurora PostgreSQL 相容版本。

## tds\_fdw 使用案例和高階步驟
<a name="tds-fdw"></a>

將 Aurora PostgreSQL 相容與 SQL Server 等異質資料庫整合，可支援下列使用案例：
+ **混合架構** ‒ 您的組織可能有現有的 SQL Server 資料庫，這些資料庫必須共存並與 Aurora PostgreSQL 相容。在這種情況下，Aurora PostgreSQL 相容可以是混合架構的一部分，它會與異質資料庫互動以交換資料或執行特定操作。透過此整合，您的組織可以使用不同資料庫平台的優勢，同時維持現有的投資。
+ **報告和分析** – 您可以使用 Aurora PostgreSQL 相容做為報告或分析資料庫。您可以從多個來源合併資料，包括 Oracle 和 SQL Server 資料庫。此使用案例在組織想要建立專為特定業務單位或使用案例量身打造的專用報告資料庫或資料修補程式的情況下很常見。

若要在 Aurora PostgreSQL 相容中設定`tds_fwd`擴充功能，請使用下列高階步驟：

1. 使用 PostgreSQL 用戶端連線至 Aurora PostgreSQL 相容叢集，並建立`tds_fdw`擴充功能：

   ```
   CREATE EXTENSION tds_fdw;
   ```

   此延伸提供從遠端 SQL Server 資料庫存取和查詢資料的功能，就好像它們是本機資料表一樣。

1. 建立伺服器物件，代表您要連線的遠端 SQL Server 或 TDS 相容資料庫。

1. 確保具備必要的安全群組和網路組態，以允許 Aurora PostgreSQL 相容連線到遠端 SQL Server 資料庫。

   如果遠端資料庫託管在內部部署，您可能需要設定 VPN 或 AWS Direct Connect 連線。

   執行以下命令：

   ```
   CREATE SERVER my_remote_sql_server
       FOREIGN DATA WRAPPER tds_fdw
       OPTIONS (
           servername 'your_server_name',
           port '1433',
           instance 'your_instance_name'
       );
   ```

1. 定義使用者映射，將 Aurora PostgreSQL 相容使用者映射至遠端 SQL Server 或 TDS 相容資料庫上的使用者：

   ```
   CREATE USER MAPPING FOR postgres
       SERVER my_remote_sql_server
       OPTIONS (
           username 'your_sql_server_username',
           password 'your_sql_server_password'
       );
   ```

1. 建立外部資料表，代表遠端 SQL Server 或 TDS 相容資料庫中的資料表或檢視：

   ```
   CREATE FOREIGN TABLE sql_server_table (
       column1 INTEGER,
       column2 VARCHAR(50)
   ) SERVER my_remote_sql_server
       OPTIONS (
           schema_name 'your_schema_name',
           table_name 'your_table_name'
       );
   ```

1. 根據 SQL 查詢建立外部資料表：

   ```
   CREATE FOREIGN TABLE mssql_people ( empno INT NOT NULL , ename VARCHAR(10) NULL, dept INT) SERVER my_remote_sql_server OPTIONS (  query 'SELECT empno, ename, dept FROM dbo.emp');
   ```

1. 查詢外部資料表，就像查詢 Aurora PostgreSQL 相容的任何其他資料表一樣：

   ```
   SELECT * FROM sql_server_table; 
   SELECT * FROM mssql_people; -- Query based on table
   ```

1. 將資料表從 SQL Server 匯入 PostgreSQL：

   ```
   IMPORT FOREIGN SCHEMA dbo LIMIT TO (emp) FROM SERVER
                           my_remote_sql_server INTO public_fdw;
   ```

1. 若要驗證查詢計劃，請執行 `EXPLAIN SELECT`：

   ```
   EXPLAIN SELECT * FROM mssql_people;
   ```

**注意**  
無法透過 `tds_fdw`延伸模組使用資料處理語言 (DML) 操作。系統不支援跨不同的資料庫引擎執行 DML 操作。`INSERT`、`UPDATE`、 `DELETE`和 `TRUNCATE TABLE` 無法在遠端 SQL 伺服器上成功。