gpt4 book ai didi

postgresql - 将结果从一个数据库中的 PostgreSQL View 复制到另一个数据库中的表

转载 作者:行者123 更新时间:2023-11-29 11:33:02 25 4
gpt4 key购买 nike

完成 PostgreSQL newb.

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

我知道有 2-3 种不同的方法可以使用我熟悉的数据库来完成此操作,但我对这一种方法束手无策。有人可以为我建议一些基本策略吗?

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

SELECT FROM instance1.db1.viewname INTO instance2.db5.tablename

然后将数据从 View 中转储为文本文件并重新加载到目标表中。

因为我不了解 PostgreSQL,所以我真的不知道可能性范围内有什么。

最佳答案

任何查询都可以作为 COPY TO 的来源从 Postgres 8.2 开始。

COPY (SELECT * FROM view1) TO '/var/lib/postgres/myfile1.csv';

要同时快速复制表架构,请使用以下方法在本地创建所需的表:

CREATE table tbl1 AS
SELECT * FROM view1
LIMIT 0; -- no data, just the schema.

然后复制(逆向工程)DDL 指令并在目标数据库中创建所有表。 pgAdmin是一个方便的 GUI。之后删除源数据库中的空表。加载数据:

COPY tbl1 FROM '/var/lib/postgres/myfile1.csv';

如果您缺乏必要的权限或无权访问服务器文件系统,请考虑 \copy in psql反而。见:

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

对于一次性传输,建议使用其中一种方法。重复申请,dblinkSQL/MED (外部数据的管理)可能更合适。
或者考虑 replication .

关于postgresql - 将结果从一个数据库中的 PostgreSQL View 复制到另一个数据库中的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8022061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com