我正在寻找一个postgres数据库备份到一个纯文本文件,然后恢复该备份。 这是我试过的。
sudo -u postgres pg_dump --create mydatabase > backup.sql sudo -u postgres psql < backup.sql
我希望数据库完全恢复到备份状态。 我期待它在backup.sql中发出一个DROP DATABASE,但是这没有发生。
目前,我的解决方法是编辑backup.sql并插入一个DROP DATABASE。 这真的有必要吗?
它看起来像你可以用默认的pg_dump做的最好的是--clean (与--create不兼容),它不会删除数据库,但是会添加命令来单独删除所有正在备份的表和其他对象。 如果以这种方式加载文件,如果有人在备份之后添加了新表,则新表将保留在数据库中。
你可以创build一个包装脚本:
#!/bin/sh echo "DROP DATABASE $1;" sudo -u postgres pg_dump --create $1
然后运行mybackupscript.sh mydatabase > backup.sql (或将sudo命令移出脚本并使用sudo运行脚本,您的select。)
在你的shell脚本中,你可以使用dropdb命令。