将Postgres表从一台服务器迁移到另一台服务器

时间:2018-06-30 11:43:27

标签: postgresql

我正在尝试将表的内容从一台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。它们没有联网,因此通过将可移动驱动器依次连接到每台计算机来传输数据。

1 个答案:

答案 0 :(得分:0)

Quote from the manual

  

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

再往下走:

  

-F格式
  --format = format

     

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

     

p
     普通
         输出纯文本SQL脚本文件(默认)。
  
     c
     自定义
     输出适合输入到pg_restore 的自定义格式的存档文件

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