すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:tds_fdw拡張子を使用したSQL Serverインスタンスのデータのクエリ

最終更新日:Nov 12, 2024

このトピックでは、PostgreSQLが提供するtds_fdw拡張機能を使用して、SQL Serverインスタンスのデータを照会する方法について説明します。

前提条件

  • RDSインスタンスはPostgreSQL 11以降のバージョンを実行します。

    説明

    この拡張機能は、PostgreSQL 17を実行するApsaraDB RDS for PostgreSQLインスタンスではサポートされていません。

  • RDSインスタンスのメジャーエンジンバージョンが要件を満たしているが、拡張機能がまだサポートされていない場合、RDSインスタンスのマイナーエンジンバージョンが更新されます。 詳細については、「マイナーエンジンバージョンの更新」をご参照ください。

  • RDSインスタンスが存在する仮想プライベートクラウド (VPC) のCIDRブロックを、接続するSQL Serverインスタンスのホワイトリストに追加する必要があります。 例: 172.xx. xx.xx/16

    説明

    ApsaraDB RDSコンソールの [データベース接続] ページで、RDSインスタンスが存在するVPCのCIDRブロックを表示できます。查看VPC网段

背景情報

tds_fdw拡張子は、PostgreSQLによって提供される外部データラッパー (FDW) です。 拡張機能を使用して、表形式データストリーム (TDS) プロトコルを使用するMicrosoft SQL Serverインスタンスなどの外部インスタンスに接続できます。

詳細については、「postgres_fdw」をご参照ください。

tds_fdw拡張子を作成する

SQL Serverインスタンスに接続した後、次のステートメントを実行してtds_fdw拡張子を作成します。

create extension tds_fdw;

拡張機能を使用するUse the extension

  1. 次の文を実行してサーバーを作成します。

    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');
    説明

    servernameパラメーターは、SQL Serverインスタンスへの接続に使用される内部エンドポイントに設定し、portパラメーターは、SQL Serverインスタンスへの接続に使用される内部ポートに設定する必要があります。

  2. 外部テーブルを作成します。 次のいずれかの方法を使用して、外部テーブルを作成できます。

    • 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');
    • クエリパラメーターを指定し、次のステートメントを実行して外部テーブルを作成します。

      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');
  3. 次のステートメントを実行して、ユーザーマッピングを作成します。

    CREATE USER MAPPING FOR postgres
      SERVER mssql_svr 
      OPTIONS (username 'sa', password '123456');
  4. 次のステートメントを実行して、外部テーブルのスキーマをインポートします。

    IMPORT FOREIGN SCHEMA dbo
      EXCEPT (mssql_table)
      FROM SERVER mssql_svr
      INTO public
      OPTIONS (import_default 'true');