我正在使用" pg_dump database_name>来转储postgres数据库。 backup.sql&#34 ;.后来我在原始数据库(database_name)中进行了一些修改,然后我从备份文件(backup.sql)恢复数据。但结果是,数据库没有恢复到原始状态,而是将原始数据添加到修改后的数据(修改后的+原始)。我只是希望它恢复到原始状态,我应该删除数据库中的所有数据,然后从备份文件中恢复,因为它提供了数据库的原始状态。或者还有其他方法吗?
答案 0 :(得分:4)
使用-c
选项进行转储:pg_dump -c database_name > backup.sql
。请参阅pg_dump文档。
答案 1 :(得分:2)
default format fo pg_dump
是明确的,因此会创建COPY
语句。因此,当您psq
backup.sql时,您只需对现有数据运行copy
。要重写数据,您应该先删除表格,或者pg_dump -F c
and pg_restore -c
。
警告 - 在这两种情况下都会破坏旧数据(这似乎是你想要的)
正如@Craig Ringer建议的那样,从备份中删除/重新创建将更容易和更清洁。要删除数据库,请运行-c --clean清理(删除)数据库对象,然后重新创建它们。 (除非使用--if-exists,否则如果目标数据库中不存在任何对象,则可能会生成一些无害的错误消息。)
DROP DATABASE au
- 请注意,应该没有连接用户成功。然后你必须创建db:CREATE DATABASE au
并运行psql -f backkup.sql -d au