gpt4 book ai didi

postgresql - pg_restore 会覆盖现有表吗?

转载 作者:行者123 更新时间:2023-11-29 11:13:28 26 4
gpt4 key购买 nike

假设我有两个主机服务器 s1 和 s2。在这两个服务器中,我都有一个名为 n1 的模式,现在我对 s1 的模式 n1 中存在的一些表进行了一些更改。我想对服务器 s2 的模式 n1 进行相同的更改。我打算做的是使用 pg_dump 备份服务器 s1 的模式 n1,并使用 pg_restore 在服务器 s2 中恢复。现在我的问题是,因为服务器 s2 中已经有相同的模式 n1 和相同的表集。恢复过程会做什么?它会覆盖现有表还是我应该删除服务器 s2 的现有模式并使用服务器 s1 的转储恢复它?

最佳答案

如果您使用 pg_restore--clean 选项,旧表将在创建新表之前被删除。

如果不使用 --clean 选项,您将收到一条错误消息,指出该表已经存在,但是 pg_restore 将继续处理,除非您使用 --exit-on-error 选项。

如果您的目标是“合并”数据库中的现有数据和转储中的数据,您可能能够做到这一点,如果您

  • 使用选项 --inserts --on-conflict-do-nothing options 创建转储

  • 忽略从 CREATE TABLE 语句中得到的错误

  • 对所有表都有一个主键或唯一约束(这是 INSERT ... ON CONFLICT TO NOTHING 工作所必需的)

关于postgresql - pg_restore 会覆盖现有表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43603192/

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