2009-05-20 145 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