Postgres备份不复制内容

时间:2015-03-10 15:18:41

标签: database postgresql

我正在研究PostgreSQL数据库,我们有一个测试服务器,它需要与生产数据集具有相同的数据集。为此,我计划在linux中启动每日CRON作业,并复制生产数据库及其内容,如表格,行,列,序列。

我检查了如何将数据库从一个复制到另一个,我使用了pg_dump命令,因为我将在下面编写它,但它只复制了数据库表,序列,而不是内容。

我该怎么做才能复制内容?

pg_dump -C databaseName | ssh -C username@removeHost.com "psql databaseName"

编辑

  • 所以,我做的是删除了测试服务器上的数据库, 创建了一个新的空数据库,然后使用上面的命令和它 工作。所以我想我只需要删除数据库 覆盖它。
  • 我应该怎样做才能绕过这种行为并进行强制更新 数据库,或删除测试服务器数据库,即使它是使用 并创建一个新的空数据库。

1 个答案:

答案 0 :(得分:1)

您是否尝试使用pg_restore代替psqlpg_restore针对您的案例提出了特殊论点:-c -C

详细信息:http://www.postgresql.org/docs/current/static/app-pgrestore.html

转储/转移/恢复db的命令示例:

pg_dump -F c databaseName | ssh -C username@removeHost.com 'pg_restore --clean --create -d postgres'

对于此命令,您需要在目标实例上连接一个空数据库。 (例如postgres)。

  

以-d命名的数据库仅用于发出初始DROP DATABASE   和CREATE DATABASE命令。所有数据都将恢复到数据库中   存档中显示的名称。

如果您已在目标实例上安装了数据库:

pg_dump -F c databaseName | ssh -C username@removeHost.com 'pg_restore --clean -d databaseName'

类似的问题:Use pg_dump result as input for pg_restore