我每天都從外部服務器收到一個MySQL轉儲文件.sql,我沒有任何控制權。我創建了一個本地數據庫來存儲.sql文件中的所有數據。我希望我可以設置一個腳本來每天自動更新本地數據庫。我每天收到的sql文件包含已經在本地數據庫中的舊數據。我如何避免這些舊數據的重複,並只插入到本地MySQL服務器的新數據?非常感謝你!如何在更新MySQL數據庫時避免重複?
回答
您可以在具有適當字段的表格上使用PRIMARY KEY或UNIQUE索引來停止重複記錄。
PRIMARY KEY
使用INSERT IGNORE而不是INSERT。如果一條記錄沒有複製現有的記錄,MySQL會照常插入它。如果記錄是重複的,那麼IGNORE關鍵字告訴MySQL放棄它而不會產生錯誤。
INSERT IGNORE
在場上使用unique constraints,你想要是唯一的。另外,正如Danny Beckett所提到的,爲了避免輸出中的錯誤(我希望將其重定向到文件以供將來分析,如果我沒有遺漏任何進程中的內容),您可以使用INSERT IGNORE
構造而不是INSERT
。
您可以使用第三方數據庫比較工具,如那些從紅門建立兩個數據庫,一個電流(你的「主」)和新的轉儲。然後,您可以在兩個版本之間運行比較工具,只更新它們之間的更改,更新主控。
+1不錯的選擇,但我認爲這是一個「矯枉過正」的當前情況 – Stephan
@Stephan謝謝。 OP沒有對數據庫的大小,他想要更新的表/數量做任何評論。發佈的所有其他解決方案都假定每個表中的主鍵,比較工具不需要一個。 –
您可以使用IGNORE語句支持的約束。
第二個選項,您可以先將數據插入臨時表。然後只插入差異。
使用第二個選項,您可以使用一些限制來通過添加存儲在數據庫中的記錄來搜索重複數據。
您需要在表格中創建主鍵。它應該是列值的唯一組合。對IGNORE使用INSERT查詢將避免在此表中添加重複項。
如果這是一個普通的mysqldump文件,然後通常它包括DROP TABLE IF EXISTS...
語句和CREATE TABLE語句,所以當數據被導入的表被重新創建。所以重複數據不應該是一個問題,除非我失去了一些東西。
- 1. 在更新中避免重複的數據在php mysql中?
- 2. 我們如何避免mysql數據庫中的重複值
- 3. 從mysql中選擇數據時如何避免重複條目?
- 4. MySql - 在更新時避免重複記錄
- 5. MySQL避免數據重複與插入
- 6. 在MySql中避免重複。
- 7. 如何避免在重新編譯時更改數據庫名稱
- 8. 如何避免數據重複插入?
- 9. 如何避免重複數據插入?
- 10. 如何避免在java中重複的數據庫連接?
- 11. SQL:避免重複數據
- 12. 避免重複鍵/數據
- 13. 避免重複數據PostgreSQL
- 14. 如何避免在我的MySQL數據庫中輸入重複的條目?
- 15. Mysql如何避免重複我自己
- 16. MySQL如何避免重複行
- 17. 避免重複進入mysql數據庫的最佳方法
- 18. 如何更新MySQL自然鍵,同時避免重複的外鍵?
- 19. 如何避免數據庫
- 20. 如何避免重複的數據導入MySQL表?
- 21. 如何避免重複數據輸入通過PHP到MySQL?
- 22. Mysql避免重複的URLS
- 23. 避免重複行mysql
- 24. 避免更新數據
- 25. 從csv文件添加數據到mysql數據庫,避免重複在php
- 26. 避免重複數據庫中插入新行
- 27. 如何避免從數據庫檢索重複值?
- 28. 如何避免重複數據庫導入.xls文件codeigniter
- 29. 如何使用php來避免數據庫重複?
- 30. 如何避免多次重複數據庫查詢
[如何在MySQL中插入'如果不存在'?](http://stackoverflow.com/questions/1361340/how-to-insert-if-not-exists-in-mysql) –