【问题标题】:Copy data between postgres databases在 postgres 数据库之间复制数据
【发布时间】:2012-07-10 10:10:27
【问题描述】:

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

我的第一个想法是简单地 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(忽略版本)不再可用。我确实知道我在做什么,但它仍然不会让我(自然)。

我还有什么其他选择?

【问题讨论】:

  • 您是否尝试使用纯文本转储 (pg_dump -Fp)? (这是一个使用psql“恢复”的SQL脚本)
  • pg_dump 在遇到版本不匹配时立即中止而不查看其他任何内容
  • 只有当你走错路时它才会停止。 IE。 8.4.13 的 pg_dump 可以无错误地从 8.3.x 转储。
  • 请仔细阅读我的问题:pg_dump from 9.1.2 does not dump data from 9.0.5

标签: postgresql postgresql-9.0


【解决方案1】:

我会使用COPY TOCOPY FROM。可以在任何一个版本中使用,并且是解决此问题的最佳工具。

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

【讨论】:

  • 完美! COPY TO(和COPY FROM)正是我一直在寻找的。​​span>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-03
  • 1970-01-01
  • 2015-08-14
  • 1970-01-01
  • 2022-12-28
  • 1970-01-01
相关资源
最近更新 更多