簡體   English   中英

通過更新/插入和刪除PostgreSQL數據庫來復制數據庫。

[英]Copy a database through updates/inserts and deletes in postgresql.

我想使用從API抓取的信息來不斷更新數據庫。 我獲得的數據可能不完整,但我應該擁有大部分數據。 到目前為止,我有一個try / except子句,在其中嘗試在數據庫中插入一行,並在其上更新行。 主要問題是我不刪除任何行。 我想在任何給定時間都擁有服務器數據的副本,或者至少要保持靠近。 我需要以某種方式跟蹤隨着時間的推移我需要刪除的行,因為我想確保不僅僅是刮板為我提供了不完整的數據。 順便說一下,我正在使用Python和psycopg2。 我認為這是一個普遍的問題,但是我找不到更好的解決方案,那就是創建一個新數據庫,用我現在擁有的數據庫對其進行幾次更新,然后替換這些數據庫。 有什么建議么? 我也不喜歡我希望異常子句在這里經常被觸發的事實。

提前致謝!

缺少更新(相當於MySQL INSERT ... ON DUPLICATE KEY UPDATE )在很長一段時間以來一直困擾着Postgresql。 通常,您的方法是最好的方法。 但是,存在一個問題,它不是原子的-在引發異常和嘗試更新之間,該行可能已被另一個進程更新。 通常,這會導致人們建立不可變的行,但這是另一個主題。

從Postgres 9.5開始,他們添加了Upsert子句。 INSERT ... ON CONFLICT ... DO ...此處提供文檔 )。

在進行其他研究時,這里似乎還有一個更全面的答案: https : //stackoverflow.com/a/17267423/1327710

暫無
暫無

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

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