完成PostgreSQL newb。
我在db1中有7到8个视图的数据需要复制到不同数据库db2中具有匹配模式(模式?)的表中。目标数据库可以是PostgreSQL的同一个实例,也可以是另一个盒子上的一个。
我知道有2-3种不同的方法可以用我熟悉的数据库来实现这个目标,但是我对这个数据库很无奈。有人可以为我建议一些基本策略吗?
在一个完美的世界里,我宁愿不做任何感觉太过分的事情 - 我宁愿做某种事情
SELECT FROM instance1.db1.viewname INTO instance2.db5.tablename
然后将数据作为文本文件从视图中转储出来并重新加载到目标表中。
由于我不了解PostgreSQL,但我并不知道可能性范围内的内容。
答案 0 :(得分:3)
CREATE TEMPORARY TABLE mytmp
AS SELECT * from myview
WHERE 1=1
;
COPY mytmp TO '/tmp/test.csv'
;
更好的方法是:
答案 1 :(得分:3)
您无需为COPY TO
创建临时表。任何查询都可以是源码自PostgreSQL 8.2 。
COPY (SELECT * FROM view1) TO '/var/lib/postgres/myfile1.csv';
阅读manual about COPY。使用
在本地创建所需的表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';
像@wildplasser这样的转储/恢复描述它,是另一种方式。