最近,我使用MySQL迁移工具包将我的项目从SQLServer 2000迁移到MySQL 5.2,虽然在迁移结束时它显示了迁移成功的消息,但是我仍然不确定数据迁移是否成功,因为在后端迁移时,这个迁移工具包做了一些类似于它改变了位数据类型到tiny int,我注意到了这一点,但我不确定它还能做什么,因为我有一些敏感的数据,所以我想从我的角度确定迁移是否真的成功,同时我不能手动完成这项工作,因为有大量的数据,有没有任何方法可以让我比较sqlserver 2000和Mysql数据库中的表生成报告。通过比较,我的意思是将表作为一个整体进行比较,包括数据、数据类型和所有内容。

最佳答案

我怀疑有一个工具,所以你很可能需要写自己的,这将需要一些时间。
我要做的第一件事是编写一个连接到两个数据库的应用程序,将表定义获取到内存中,并按表名的顺序将它们输出到一个文件中。
然后使用类似WinMerge的文件比较工具检查差异。如果有与上面提到的不同之处,请在MySQL中进行必要的更改,并在必要时映射数据。
之后,我将修改同一个应用程序以循环遍历数据库中的每个表,将所有数据带回某种支持联合操作的基于集合的对象中。将旧表与新表合并,并检查结果中的行数是否等于源数据库中的行数。如果是的话,所有的数值都是一样的,请另作标记以便进一步检查。这很可能会照顾到您的大多数表,您可以手动检查未通过此测试的表。
所有其他对象都是一个主题的变体(它们是更简单的对象,只是文本),但我会把大部分时间花在验证数据上。
希望这对你有帮助,不管你怎么看,这都是一个耗时的过程。

10-08 08:36
查看更多