ホームページ >データベース >mysql チュートリアル >PostgreSQL でクロスデータベース クエリを実行するにはどうすればよいですか?

PostgreSQL でクロスデータベース クエリを実行するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-12 10:56:43417ブラウズ

How Can I Perform Cross-Database Queries in PostgreSQL?

PostgreSQL でのクロスデータベース クエリの有効化

PostgreSQL は最初はデータベース間のクエリを制限しているように見えますが、実用的な解決策が存在します。 postgres_fdw (外部データ ラッパー) モジュールは、場所 (ローカルまたはリモート) に関係なく、さまざまな PostgreSQL データベースに接続してテーブルをクエリするために必要な機能を提供します。

重要な考慮事項: 単一マシンにクロスデータベース クエリを実装する前に、スキーマの使用について検討してください。 スキーマは、追加の構成を必要とせずに、さまざまなデータセット間でクエリを実行するための簡単なアプローチを提供します。

postgres_fdw 互換性:

postgres_fdw モジュールは PostgreSQL バージョン 9.3 以降と互換性があります。 9.3 より前のバージョンの場合、dblink 関数は同等のソリューションを提供します。

実装手順:

クロスデータベースクエリに postgres_fdw を利用するには:

  1. 外部データ ラッパーを確立する: ターゲット データベースの外部データ ラッパーを作成します:
<code class="language-sql">CREATE FOREIGN DATA WRAPPER postgres_fdw OPTIONS (
    host 'hostname',
    port '5432',    -- Standard PostgreSQL port
    dbname 'target_database'
);</code>
  1. 外部サーバーを定義します: ターゲット データベースにリンクする外部サーバーを作成します:
<code class="language-sql">CREATE SERVER target_server FOREIGN DATA WRAPPER postgres_fdw OPTIONS (
    user 'username',
    password 'password'
);</code>
  1. ユーザー アクセスのマップ: 現在のユーザーにターゲット データベースへのアクセスを許可するユーザー マッピングを作成します:
<code class="language-sql">CREATE USER MAPPING FOR current_user SERVER target_server OPTIONS (
    user 'target_user',
    password 'target_password'
);</code>
  1. 外部テーブルをインポートします: 目的のテーブル (またはスキーマ) を現在のデータベースにインポートします:
<code class="language-sql">IMPORT FOREIGN SCHEMA all FROM SERVER target_server INTO schema_name;</code>
  1. インポートされたテーブルをクエリします: ここで、インポートされたテーブルをローカル テーブルであるかのようにクエリします:
<code class="language-sql">SELECT * FROM schema_name.target_table;</code>

以上がPostgreSQL でクロスデータベース クエリを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。