Postgresql: объединить 2 похожие базы данных

У меня есть требование объединить две базы данных (Database1 & Database2) в общую базу данных в Postgresql.

базы данных1

Table1

Id-Значение (Id-первичный ключ)

1-a
2 - АА
3 - ААА
4 - аааа

база данных 2

Table1

Значение Id (Id-первичный ключ)

2-bb
5 - bbbbb

Я хочу, чтобы мой выход, как

OutPutDatabase

Table1

Значение Id (Id-первичный ключ)

1-a
2-bb
3 - ААА
4 - аааа
5 - bbbbb

Как я могу этого достичь?

3 ответов


Не моя идея, но я читал в прошлом.

источник: переместить таблицу в новую базу данных

pg_dump -d db1 -t table1 |psql db2

then psql and do

insert into table2 (select * from table1);

сначала загрузите таблицы в две отдельные схемы в одной базе данных.

CREATE SCHEMA db1;
CREATE TABLE db1.table1 (id INT PRIMARY KEY, value VARCHAR(10));
-- load the contents of Table1 @ Database1 into db1.table1

CREATE SCHEMA db2;
CREATE TABLE db2.table1 (id INT PRIMARY KEY, value VARCHAR(10));
-- load the contents of Table1 @ Database2 into db2.table1

затем вы можете объединить их, установив приоритет db2 над db1.

SELECT
  DISTINCT ON (id)
  id,
  value
FROM (
  SELECT
    *,
    1 AS db
  FROM
    db1.table1

  UNION

  SELECT
    *,
    2 AS db
  FROM
    db2.table1) AS mix
ORDER BY
  id,
  db DESC;

я использовал