3

我有一些数据库备份,我试图弄清楚是否有一种方法可以比较备份中的数据,以了解数据随时间的变化情况。我在要比较的字段上没有时间戳,但我在行上有一个唯一的 ID。备份是使用 mysqldump 创建的 .sql 文件。

有这样做的过程吗?

4

5 回答 5

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

于 2009-05-20T02:14:10.893 回答
2

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

您也可以只diff在命令行中使用,但生成的数据集可能不那么可行。

于 2009-05-20T02:14:51.110 回答
2

您可以使用WinMerge之类的工具或任何其他合并工具来查看备份的实际差异。成功与否取决于文件的大小。对于非常大的备份,我不建议这样做。

于 2009-05-20T02:15:55.257 回答
1

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

一件好事是表模式与数据一起被转储。

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

缺点是转储的数据部分被写为最大长度的行,所以一些文本编辑器会窒息它。

干杯,

-R

于 2009-05-20T03:43:37.750 回答
0

有一个很好的工具是pydumpy https://code.google.com/p/pydumpy/(镜像:https ://github.com/miebach/pydumpy )

它使您可以创建易于比较的转储diff

如果您想比较已经存在的转储,您可以首先从它们中的每一个创建一个临时 mysql 数据库并从那里开始。

于 2015-06-16T15:46:25.960 回答