比较mysql备份的数据

时间:2009-05-20 02:08:34

标签: mysql database schema mysqldump mysql-management

我有一些数据库的备份,我正在试图找出是否有办法比较备份中的数据,以查看数据随时间的变化情况。 我在要比较的字段上没有时间戳,但我在行上有一个唯一的ID。备份是使用mysqldump创建的.sql文件。

有没有这样做的过程?

5 个答案:

答案 0 :(得分:4)

MySQL有许多diff工具,包括一个名为MySQLDiff(http://www.mysqldiff.org/)的工具。这里还有一个命令行界面,可以在这里找到:

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

请参阅此前一篇StackOverFlow帖子,了解与此类似的视觉差异工具(以及其他一些解决方案):

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

答案 1 :(得分:2)

理论上,您可以将备份作为第二个数据库导入,然后编写一个连接到SQL服务器的PHP脚本,并按唯一ID迭代条目,并进行比较。

您也可以在命令行中使用diff,但结果数据集可能无法使用。

答案 2 :(得分:2)

您可以使用WinMerge之类的工具或任何其他合并工具来查看备份的实际差异。这种成功取决于文件的大小。我不建议为真正的大型备份执行此操作。

答案 3 :(得分:1)

如果使用mysqldump进行备份,则备份文件将是标准文本文件。然后,您可以使用任何体面的文本文件比较实用程序(即unix系统上的diff)来查看差异。

关于这一点的一个好处是表模式与数据一起被转储。

另一个好处是备份是版本和机器无关 - 您可以恢复到任何正在运行的MySQL副本。

缺点是转储的数据部分被写为最大长度行,因此一些文本编辑器会阻塞它。

干杯,

-R

答案 4 :(得分:0)

这项工作有一个很好的工具,pydumpy https://code.google.com/p/pydumpy/(镜像:https://github.com/miebach/pydumpy

它允许您创建易于与diff

进行比较的转储

如果要比较现有的转储,可以先从每个转储创建一个临时的mysql数据库,然后从那里开始。