在公司项目中,我有幸负责制作“升级脚本”。升级脚本,无疑两步,先结构比对,再初始数据比对。
一、结构比对
结构比对比较简单,使用navicat for mysql 工具,“工具”-“结构同步”,选择好“源”、“目标”、“比对选项”后,点击“比对”。(假如需要将数据库v4升级到v5)
比对完毕,将结构同步的sql语句全选复制出来,如下图
二、数据同步
右击“全选勾选”,“运行查询后”,实现结构同步,接下来需要数据比对了。
项目中,随着开发的深入,初始数据可能变化,例如权限模块的重构、新功能的添加。
navicat for mysql有“数据同步”,但是不能显示"数据比对"产生sql语句。
2.1 人工比对
很无奈,使用项目中SVN提交sql的版本号比较,右击“compare revisions”
可能因为我sql脚本文件大,出现以下意外情况:
上网查了些资料,发现有个“beyond compare”文本比对工具,感觉跟SVN的比对类似。下载地址:http://www.scootersoftware.com/download.php
2.2 自动比对
苦逼的比对后,完成任务。我又试着找这类的软件。发现一个red gate公司的mysql compare(含mysql data compare)软件满足我基本要求,遗憾的是,有乱码,例如,我的sql脚本中,中文比对后显示成“???”。该软件最近版本是2012年的,没人维护升级。老外也有这样的困惑,放弃!
下载地址:http://www.red-gate.com/products/mysql/mysql-compare/
惊喜的是,终于找到满意的软件工具了---dbForge Compare Bundle for MySQL,下载地址:http://www.devart.com/downloads.html
这软件跟mysql compare很相似,对于经常用navicat for mysql的朋友很简单,比对后,点击同步。
创建脚本文件,并使用内置编辑器打开
清爽的sql脚本出炉了,根据项目需要,简单手工修改。
最后,结合事务,写存储过程。