gpt4 book ai didi

postgresql - 从 pg_dump 恢复数据不会覆盖数据,但会将数据附加到原始数据库

转载 作者:行者123 更新时间:2023-11-29 11:24:55 33 4
gpt4 key购买 nike

我正在使用“pg_dump database_name > backup.sql”转储 postgres 数据库。后来我在原始数据库(database_name)中做了一些修改,然后我从备份文件(backup.sql)中恢复数据。但是结果是,数据库没有恢复到原始状态,而是将原始数据添加到修改后的数据(修改+原始)。我只想恢复到原始状态,我应该删除所有在从备份文件恢复数据之前从数据库中提取数据,因为它给出了数据库的原始状态。还是有其他方法可以做到这一点?

最佳答案

default format fo pg_dump 很简单,所以它创建了一个 COPY 语句。因此,当您 psql backup.sql 时,您只需在现有数据上运行那些 copy。要重写数据,您应该先删除表或 pg_dump -F c and pg_restore -c

警告 - 在这两种情况下它都会破坏旧数据(尽管这似乎是您想要的)

-c --clean Clean (drop) database objects before recreating them. (Unless --if-exists is used, this might generate some harmless error messages, if any objects were not present in the destination database.)

正如@Craig Ringer 所建议的,从备份中删除/重新创建会更容易和更清晰。要删除数据库,您可以运行 DROP DATABASE au - 请注意,应该没有已连接的用户才能成功。然后你必须创建数据库:CREATE DATABASE au 并运行 psql -f backup.sql -d au

关于postgresql - 从 pg_dump 恢复数据不会覆盖数据,但会将数据附加到原始数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43675321/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com