【问题标题】:Migrating a postgres table from one server to another将 postgres 表从一台服务器迁移到另一台服务器
【发布时间】:2018-06-30 22:47:51
【问题描述】:

我正在尝试将表的内容从一个 postgres 服务器迁移到另一个。

两个数据库的表结构相同,但数据库名和用户名不同。

在我的源数据库中,我使用此命令导出表格内容...

pg_dump -a -U postgres -d postgres -t clust -f f:\dump\clust.dump.psql

这是以用户 'postgres' 连接到数据库 'postgres' 并将表 'clust' 的内容转储到指定文件。

然后我将文件复制到目标服务器并尝试使用以下内容来恢复它....

pg_restore -a -U testapp -d testdb -t clust -f f:\dump\clust.dump.psql

命令和pg_dump很相似,只不过这次的数据库叫'testdb',用户名是'testapp'。

这会产生错误......

pg_restore: options -d/--dbname and -f/--file cannot be used together

我该如何解决这个问题?如果没有文件定义,命令将不知道从哪里恢复,如果没有数据库名称,它将不知道要连接到哪一个?

注意 - 两台机器都是 windows,运行相同版本的 postgres。它们没有联网在一起,因此通过将可移动驱动器依次连接到每台机器来传输数据。

【问题讨论】:

  • pg_dump 创建一个 SQL 脚本。您需要使用 psql 运行它
  • 谢谢@a_horse_with_no_name - 下次我一定记得阅读小字 - 我假设 pg_dump 和 pg_restore 是互惠函数!

标签: postgresql


【解决方案1】:

Quote from the manual

转储可以脚本或存档文件格式输出。脚本转储是纯文本文件,其中包含将数据库重建到保存时的状态所需的 SQL 命令。 要从此类脚本中恢复,请将其提供给 psql

然后再往下:

-F格式
--format=格式

选择输出格式。格式可以是以下之一:

p
平原
输出纯文本 SQL 脚本文件(默认)。

c
定制
输出一个自定义格式的存档适合输入到 pg_restore

由于您没有指定格式,它是纯文本转储 - 需要通过 psql 运行的 SQL 脚本

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    相关资源
    最近更新 更多