簡體   English   中英

如何在沒有 -c 標志的情況下將本地 Postgres 轉儲合並到 AWS RDS?

[英]How do I merge a local Postgres dump to AWS RDS without the -c flag?

我的 PostgreSQL 數據庫在 AWS RDS 中有 A 版,在我的本地機器上有 B 版。 DB B 是從 DB A 的轉儲創建的,並已在本地更新。 我正在嘗試將我在本地擁有的數據合並到 RDS。

A 有 B 沒有的數據,B 有 A 沒有的數據,因此我不能在pg_dump使用-c標志(如在這個問題中)。

我用pg_dump導出我的數據庫:

pg_dump -f dump.sql mydb

我嘗試使用psql將我的數據庫導入 RDS:

psql -h ABC.XYZ.eu-west-2.rds.amazonaws.com -U myself mydb < dump.sql

這會更新架構,即將我在本地擁有的列添加到 RDS,但無法將任何值插入到這些列中。 對於 DB A 中存在的每個表,我都會收到以下錯誤:

ERROR:  duplicate key value violates unique constraint "table_pkey"

正如我從這個問題中了解到的,我的序列可能不同步,但這似乎很奇怪,因為我為 DB A 中的每個表都得到了它,而 DB B 是從 DB A 的轉儲創建的。

如果我將-c標志與pg_dump一起使用,則合並有效,但 DB A 中 DB B 沒有的所有數據都被刪除。

如何在不丟失數據的情況下將我的本地數據庫合並到 AWS 上的遠程數據庫中?

如果您不需要修改任何現有行,您可以使用pg_dump的選項--on-conflict-do-nothing ,這是 v12 中的新功能。

不會添加任何新列。 pg_dump不是模式遷移工具。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM