FDW для PostgreSQL

1. Подготовка среды PostgreSQL

Среда PostgreSQL:

Host: 127.0.0.1
Port: 5432
User: pg
Database: postgres

Теперь создайте тестовую таблицу:

postgres=# CREATE TABLE test(c1 int, c2 int);
CREATE TABLE

Затем вставьте тестовые данные:

postgres=# INSERT INTO test VALUES(0,0),(1,1),(2,2);
INSERT 0 3

2. Создание FDW в YMatrix

Войдите в YMatrix и используйте postgres_fdw, чтобы подключиться к ранее созданной таблице PostgreSQL.

Сначала создайте расширение postgres_fdw:

mxadmin=# CREATE EXTENSION postgres_fdw;
CREATE EXTENSION

Создайте определение сервера для PostgreSQL:

mxadmin=# CREATE SERVER server_pg FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host '127.0.0.1', port '5432', dbname 'postgres');
CREATE SERVER

Создайте отображение пользователя:

mxadmin=# CREATE USER MAPPING FOR mxadmin SERVER server_pg OPTIONS (user 'pg');
CREATE USER MAPPING

Создайте внешнюю таблицу:

mxadmin=# CREATE FOREIGN TABLE ext_pg (c1 int, c2 int) SERVER server_pg OPTIONS (table_name 'test');
CREATE FOREIGN TABLE

3. Чтение и запись данных с использованием postgres_fdw

После успешного создания внешней таблицы вы можете напрямую читать и записывать данные во внешнюю таблицу, чтобы получать доступ и изменять таблицу test в PostgreSQL.

3.1 Запрос данных

Следующий запрос показывает, что данные во внешней таблице совпадают с данными в исходной таблице:

mxadmin=# SELECT * FROM ext_pg;
 c1 | c2
----+----
  0 |  0
  1 |  1
  2 |  2
(3 rows)

3.2 Вставка данных

Вставьте данные во внешнюю таблицу:

mxadmin=# INSERT INTO ext_pg VALUES(3,3);
INSERT 0 1

После вставки подключитесь к PostgreSQL и проверьте данные:

postgres=# SELECT * FROM test;
 c1 | c2
----+----
  0 |  0
  1 |  1
  2 |  2
  3 |  3
(4 rows)

Данные успешно записаны в таблицу test в PostgreSQL.