[英]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.