psql空数据库恢复之前

我想恢复一个PostgreSQL的数据库,但在此之前,我需要清空恢复目标数据库。

有没有psql的选项来做到这一点?

现在我使用一个命令行如下:

psql -U postgres db_test < testdb.sql 

这里有两个选项 – 如果你的备份是纯文本,那么你添加-c选项到pg_dump – 即

pg_dump -c mydb > mydb.sql

否则,如果您在pg_dump上使用-Fc或-Ft,那么您在pg_restore上使用-c标志

pg_dump -Ft -b mydb > db.tar

pg_restore -c -d newdb db.tar

假设你正在谈论从pg_dump备份中恢复,答案是“这取决于备份是如何进行的”,但通常是:在恢复备份之前,必须清空数据库。

在Postgres中清空数据库的最快方法是删除并重新创build数据库(您可能需要超级用户权限),否则您必须手动删除每个表和您可能具有的任何存储过程( CASCADE是您的朋友在这里)。