• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PostgreSQLで外部DB内のテーブル参照方法を教えてください)

PostgreSQLで外部DB内のテーブル参照方法を教えてください

このQ&Aのポイント
  • PostgreSQLで別データベースのテーブルを参照することはできますか?
  • app1_dbに接続した状態でcommon_dbのテーブルを参照する方法を教えてください
  • postcodeテーブルをapp1_dbに接続した状態で参照するには、どのような参照クエリになりますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • yamada59
  • ベストアンサー率74% (29/39)
回答No.1

PostgreSQL 本体の機能では実現できませんが、contrib モジュールの dblink を使えばできます。 dblink のインストール方法は PostgreSQL のインストール方法によって異なりますが、RPM パッケージであれば postgresql-contrib というパッケージをインストールし、以下のように dblink の関数などを定義します。 psql -f /usr/share/postgresql/contrib/dblink.sql (データベース名) データベース名には他のデータベースにアクセスしたいデータベース名、例では app1_db を指定します。なお、dblink.sql のパスはパッケージによって異なる場合があります。 dblink をインストールすれば以下のように関数を呼び出して別のデータベース内のテーブルを参照できます。 SELECT * FROM dblink('dbname=common_db', 'SELECT * FROM postcode') AS postcode(postcode text, pref_name text); dblink について詳しくは PostgreSQL のマニュアルを読んでください。 http://www.postgresql.jp/document/pg840doc/html/dblink.html ただ、質問の例にあるデータベース名やテーブル名を見ていると、アプリケーションごとに名前空間を分けたいだけのようなので、それであればスキーマを使ったほうがよさそうな気もします。

参考URL:
http://www.postgresql.jp/document/pg840doc/html/dblink.html
tty911
質問者

お礼

スキーマ単位でアプリ単位に分けるアドバイスまでいただき 細かなご説明ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A