将结果从一个数据库中的 PostgreSQL 视图复制到另一个数据库中的表

Rus*_*her 4 postgresql replication etl

完整的 PostgreSQL newb。

我在 db1 中有 7-8 个数据视图,我需要将它们复制到不同数据库 db2 中具有匹配模式(模式?)的表中。目标数据库可能是 PostgreSQL 的同一个实例,也可能是完全不同的一个实例。

我知道使用我熟悉的数据库有 2-3 种不同的方法来实现这一点,但我对这个无能为力。有人可以为我建议一些基本策略吗?

在一个完美的世界中,我宁愿不必做任何感觉太 ETL 的事情——我宁愿做某种

SELECT FROM instance1.db1.viewname INTO instance2.db5.tablename
Run Code Online (Sandbox Code Playgroud)

然后将数据作为文本文件从视图中转储出来并重新加载到目标表中。

因为我不了解 PostgreSQL,所以我真的不知道什么是可能的。

Erw*_*ter 5

您不需要为COPY TO. 自 PostgreSQL 8.2 起,任何查询都可以是源。

COPY (SELECT * FROM view1) TO '/var/lib/postgres/myfile1.csv';
Run Code Online (Sandbox Code Playgroud)

阅读有关 COPY手册。使用本地创建所需的表

CREATE table tbl1 AS
SELECT * FROM view1
LIMIT 0;   -- no data, just the schema.
Run Code Online (Sandbox Code Playgroud)

复制 DDL 指令并在目标数据库中创建所有表。pgAdmin是一种方便的 GUI 来执行此操作。再次删除源数据库中的空表。加载数据

COPY tbl1 FROM '/var/lib/postgres/myfile1.csv';
Run Code Online (Sandbox Code Playgroud)

转储/恢复就像@wildplasser 描述的那样,是另一种方式。

建议一次性转移其中一种方法。对于重复应用,dblinkSQL/MED (外部数据管理)可能更合适。