首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将结果从一个数据库中的PostgreSQL视图复制到另一个数据库中的表

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

Stack Overflow用户
提问于 2011-11-06 01:49:24
回答 2查看 6.9K关注 0票数 4

完整的PostgreSQL newb。

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

对于我熟悉的数据库,我知道有2-3种不同的方法来实现这一点,但在这一点上我无能为力。有人能给我提一些基本的策略吗?

在一个完美的世界里,我不想做任何让人感觉太过ETL的事情--我宁愿做一些

代码语言:javascript
运行
复制
SELECT FROM instance1.db1.viewname INTO instance2.db5.tablename

然后将数据以文本文件的形式从视图中转储出来,并重新加载到目标表中。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-06 13:31:01

您不需要为COPY TO创建临时表。从PostgreSQL 8.2开始,任何查询都可以是源

代码语言:javascript
运行
复制
COPY (SELECT * FROM view1) TO '/var/lib/postgres/myfile1.csv';

阅读manual about COPY。使用在本地创建所需的表

代码语言:javascript
运行
复制
CREATE table tbl1 AS
SELECT * FROM view1
LIMIT 0;   -- no data, just the schema.

复制DDL指令并在目标数据库中创建所有表。pgAdmin是一种方便的图形用户界面。再次删除源数据库中的空表。使用以下命令加载数据

代码语言:javascript
运行
复制
COPY tbl1 FROM '/var/lib/postgres/myfile1.csv';

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

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

票数 5
EN

Stack Overflow用户

发布于 2011-11-06 02:13:37

代码语言:javascript
运行
复制
CREATE TEMPORARY TABLE mytmp
AS SELECT * from myview
WHERE 1=1
;


COPY mytmp TO '/tmp/test.csv'
;

更好的方法是:

  • 将视图复制到表中(create table1 as select * from view1;...)
  • use pg_dump -t table1 -t table2 ...mydbname >myfile.out
  • use myfile.out以重新创建和填充表。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8022061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档