2009-05-20 77 views
3

我已經對數據庫進行了一些備份,並且試圖找出是否有方法來比較備份中的數據以查看數據隨時間如何變化。 我沒有我想比較的字段上的時間戳,但我在該行上有一個唯一的ID。備份是使用mysqldump創建的.sql文件。比較來自mysql備份的數據

是否有這樣做的過程?

回答

4

MySQL中有很多不同的工具,包括名爲MySQLDiff的工具(http://www.mysqldiff.org/)。還有這個命令行界面,可以在這裏找到:

http://devzone.intellitree.com/projects/intellitree-cli-extension-to-mysqldiff/

請參閱以下類似的視覺差異的工具這個以前的StackOverflow職位(加上一些其他的解決方案):

https://stackoverflow.com/questions/218499/mysql-diff-tool

+0

它看起來像我需要將這些備份加載到並行dbs中的每個工具。我希望他們是一種直接從.SQL文件執行此操作的方法。但我只是看了一下.sql文件包含的內容,並且我可以理解爲什麼它不會以這種方式工作。我沒有意識到mysqldump將數據庫轉儲到一堆mysql語句中來重新創建數據庫。 – pedalpete 2009-05-20 02:47:52

2

理論上講,您可以將備份導入爲第二個數據庫,然後編寫一個連接到SQL Server的PHP腳本,並通過唯一標識對條目進行迭代,然後進行比較。

您也可以在命令行中使用diff,但生成的數據集可能不可行。

+0

我原本是想創建一個php腳本,但希望能夠在不創建同一個數據庫的多個實例的情況下(這看起來我可能需要這樣做)做到這一點。我希望他們只是查看.sql文件中的數據 – pedalpete 2009-05-20 02:24:53

2

您可以使用像WinMerge這樣的工具或任何其他合併工具來查看備份的實際差異。這將取決於你的文件的大小。我不建議爲真正的大型備份做這個。

1

如果你使用mysqldump進行備份,那麼你的備份文件將是標準的文本文件。然後,您可以使用任何體面的文本文件比較實用程序(即在unix系統上進行比較)來查看差異。

對此的一個好處是表格模式隨數據一起轉儲。

另一個好處是備份是版本和機器獨立的 - 你可以恢復到任何正在運行的MySQL副本。

缺點是轉儲的數據部分被寫爲最大長度行,所以一些文本編輯器會窒息它。

乾杯,

-R