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;