PostgreSQL:如何将数据从一个数据库表复制到另一个数据库表?

13

我需要一个简单的例子,展示如何将数据库 DB1 表格 T1 的数据复制到数据库 DB2 表格 T2 中。

T2T1 拥有相同的结构(相同的列名和属性,只是数据不同)。DB2 运行在与 DB1 相同的服务器上,但使用不同的端口。


1
使用外部数据包装器。 - user330315
请参考这个链接 https://dev59.com/WXNA5IYBdhLWcg3wpvtg#876565 它对我有效! - Aloha
2个回答

12

如果两个数据库位于不同的服务器实例上,您可以从db1中以CSV格式导出数据,然后将数据导入db2

COPY (SELECT * FROM t1) TO '/home/export.csv';

然后再加载回 db2

COPY t2 FROM '/home/export.csv';

需要注意的是,两个不同数据库实例上的两个表必须具有相同的结构。

使用命令行工具:pg_dump 和 psql,您可以按照以下方式进行操作:

pg_dump -U postgres -t t1 db1 | psql -U postgres -d db2

你可以使用命令行参数来指定 pg_dumppsql 的服务器地址和/或端口。
另一个选择是使用外部工具,例如:openDBcopy,来执行表的迁移/复制。

第一条语句在Postgres中不受支持,您不能像那样引用不同数据库中的表。(而且db2.t2引用了架构db2中的表,而不是"数据库"db2) - user330315
第一条语句将无法跨数据库工作(仅在模式之间工作,这就是您的语句正在执行的操作)。 - user330315
已删除,因为问题的实际解决方案是将其导出为CSV文件,然后再导入。 - aleroot
1
为什么使用 COPY (SELECT * FROM t1) 而不是 COPY t1?同时省略 db1db2 限定符。 - Laurenz Albe
好的,CSV解决方案已被接受。但是还有一个问题。在将其复制到db2时,我需要相同的值,除了ID之外。我需要像新行一样插入,具有新的ID。有什么建议吗? - Norbertas Brazaitis
显示剩余2条评论

6
你可以尝试这个 -
 pg_dump -t table_name_to_copy source_db | psql target_db

点赞!如何将数据库1的表1中的仅4列复制到数据库2的表1的4列中? - PirateApp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接