我正在研究PostgreSQL数据库,我们有一个测试服务器,它需要与生产数据集具有相同的数据集。为此,我计划在linux中启动每日CRON作业,并复制生产数据库及其内容,如表格,行,列,序列。
我检查了如何将数据库从一个复制到另一个,我使用了pg_dump
命令,因为我将在下面编写它,但它只复制了数据库表,序列,而不是内容。
我该怎么做才能复制内容?
pg_dump -C databaseName | ssh -C username@removeHost.com "psql databaseName"
编辑
答案 0 :(得分:1)
您是否尝试使用pg_restore
代替psql
? pg_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'