我今天用postgres
pg_dump zeus_development -U test > zeus_development.dump.out
如果我想恢复到另一个数据库zeus_生产呢
我该怎么办?
我今天用postgres
pg_dump zeus_development -U test > zeus_development.dump.out
如果我想恢复到另一个数据库zeus_生产呢
我该怎么办?
简单地说,首先使用template0
作为template database创建数据库:
createdb -U test -T template0 zeus_production
然后,在此数据库上恢复转储:
psql -U test zeus_production -f /path/to/zeus_development.dump.out
还原时,始终使用template0
explicit,因为它始终是一个空的、不可修改的数据库.如果不使用显式模板,PostgreSQL将假定为template1
,并且如果它有一些对象,例如转储数据库已经有的表或函数,则在恢复时会出现一些错误.
尽管如此,即使要在具有相同名称(zeus_development
)的数据库上恢复,也应该以相同的方式创建(或重新创建)它.除非在转储时使用-C
选项(如果使用二进制转储,则使用pg_restore
中的-C
),否则我不建议这样做,因为这样做会降低灵活性(比如在不同的数据库名称上恢复).