我有postgresql數據庫,我正在更新大約100000條記錄。我使用session.merge()來插入/更新每條記錄,並在每1000條記錄後進行一次提交。提交過程中刪除錯誤查詢
i=0
for record in records:
i+=1
session.merge(record)
if i%1000 == 0:
session.commit()
此代碼正常工作。在我的數據庫中,我有一個帶有UNIQUE字段的表,並且有一些重複記錄插入到它中。發生這種情況時會出現錯誤,稱該字段不是唯一的。由於我一次插入1000條記錄,因此回滾不會幫助我跳過這些記錄。有什麼辦法可以跳過session.merge()爲重複記錄(除了解析所有記錄找到重複的記錄當然)?
我懷疑「解析所有記錄以找到重複記錄」是保持ACID和UNIQUE語義的唯一方法。另一方面,讀取100'000的唯一ID字段並檢查客戶端代碼中的重複項將比替代方案快得多,並且可以在假設合併的情況下在「容許緩慢」和「方式太慢」之間做出區別桌子在你下面並沒有太多變化。 – msw
@msw是的,即時通訊卡在岩石和困難的地方之間。合併表不改變 –