LoginSignup
10
12

More than 5 years have passed since last update.

postgres_fdwの使い方

Posted at

結局使わなかったけど、postgres_fdwの定義方法を調べたのでメモ。

postgres_fdwとは?

2つのpostgresqlのデータベースがある場合に、一方のデータベースから他方のデータベースのテーブルを参照する技術です。
一度FOREIGN TABLEを定義すれば、ローカルにあるデータベースと同じようにSELECT, INSERT, UPDATE, DELETEができます。

設定が必要なのは参照する側のデータベースのみで被参照のデータベースの方は何一つ手を入れる必要はありません。

heroku-postgresでも試しましたが、何の問題もなく動きました。

How to use

細かいところはドキュメントを読んでもらうとして、実際に流したSQLは以下のような感じです。

FOREIGN TABLEはいくつでも定義することができます。

CREATE EXTENSION postgres_fdw;
CREATE SERVER app1 FOREIGN DATA WRAPPER postgres_fdw 
OPTIONS (host 'xxxx.compute-1.amazonaws.com', dbname 'xxxx', port '5432');

CREATE USER MAPPING FOR public SERVER app1
OPTIONS (user 'xxxx', password 'xxxx');

CREATE FOREIGN TABLE app1_users (
  id                     BIGINT,
  name                   VARCHAR(40)  NOT NULL,
  email                  VARCHAR(255) NOT NULL,
  password               VARCHAR(255) NULL,
  image_url              VARCHAR(255) NULL,
  created_at             TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at             TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP
) SERVER app1
OPTIONS (table_name 'users');

SELECT count(*) FROM app1_users;

heroku-postgresにつなぐ場合はSSLの設定が必要かと思いましたがデフォルトがPreferred(必要であればSSLを使う)なので、特に設定しなくても問題なく動きました。

便利です。

10
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
12