2012-07-10 49 views
0

我需要一次性将PostgreSQL数据库中的一个表中的数据复制到另一个数据库中的相应表中。没有那么多的数据:大约2500行,8列(一些数字,一些varchar)。在postgres数据库之间复制数据

我的第一个想法是在另一个数据库上简单地pg_dump -a -t table -f output.file,然后pg_restore。然而,事实证明,中pg_dump版本和源服务器不匹配 - 和我有过的版本,没有控制,所以升级不是一个选项:

pg_dump: server version: 9.1.2; pg_dump version: 9.0.5 
pg_dump: aborting because of server version mismatch 

不幸的是,随着版本的Postgres 9,选项-i(忽略版本)不再可用。我知道我在做什么,但它仍然不会让我(自然)。

我还有其他选择吗?

+0

你是否尝试使用纯文本转储('pg_dump -Fp')? (这是一个使用'psql'“恢复”的SQL脚本) – 2012-07-10 10:21:03

+0

只要遇到版本不匹配,pg_dump就会立即中止,而不会查看其他任何东西 – 2012-07-10 10:31:25

+0

只有当你走错了方向才会停止。即8.4.13中的pg_dump可以从8.3.x转储而不会出错。 – 2012-07-10 13:08:04

回答

0

我会用COPY TOCOPY FROM。适用于任一版本,并且是最佳工具。

如果你想使用pg_dump,你必须使用适当的版本。每个版本都有独立的可执行文件。在Linux上,您可以通过which pg_dump获得当前使用的可执行文件的路径。

+0

完美! 'COPY TO'(和'COPY FROM')正是我一直在寻找的东西。 – 2012-07-10 10:30:41