• 数据库升级脚本制作


    最近由于公司走了一个负责数据库方面的人,一些有关数据库的任务没人做了,leader就找到了我。这次的任务是负责新版本的数据库升级脚本,难点是我对数据表结构不是很熟悉,而且新版本的功能也不是有我来负责的,还有就是数据表结构变化比较大,要保证用户原本数据不能丢失。200多张表里面还是有数据的,如果人工做的话不死人才怪。于是查找工具,先从自己熟悉的powerdesigner开始,先用反向工程分别生成新老两个数据库的模型,然后点击 菜单中database->modify database,再按照步骤做,没啥难度。完工后生成了一个很长很长的sql, 由于是机器生成,看起来超麻烦,所以一狠心,直接拿了备份升级下试试看。执行好后,报出一堆错,看看表是改了,但数据都丢失了,也不确定是不是所以的表都升级了。唉,这对于表变化比较大或原有数据比较多的情况根本行不通。

    注意图中的 Use alter statements when possible选项,说的太模棱两可。我试了下,大多数只要表变化一复杂,他就开始偷懒不用alter来搞表,直接create然后把原表的数据导入。先不说效率,万一丢失了数据可不好。

    如果你的表和数据都变化比较少,那PD也算个好方法,毕竟方便,高效。如果不是,下面介绍个好工具SQL Delta,这个用来对比数据库的确好用。

    进入系统,设置好要升级后的数据库和升级前的数据库,然后点compare databases来比较表结构

    大家可以发现字段变化看的很清楚,有多的有少的,也有改变类型的。一般建议升级时多余的字段不要删除,只增加和修改。

    大家可以在右边看到工具建议的升级脚本,由于是一个表一个表查看,这样虽然工作量大了,但比较放心,而且脚本可读性较好。

    这里也要注意对于表变化比较大的情况,这工具还是采用以下方法(先建立临时表,导入原表数据,然后删除原表,临时表更名成原表的名字)

    接下来比较表内的数据,按菜单栏中的data 然后点击wizard

    选中所要比较数据的表,一般是些配置用表,用户的数据不要丢失就行。

    大家可以观察A,B来知道数据的变化,想在升级脚本中体现的话,就选中不想生效的就去掉勾。最后点击Sync进入后save一把,脚本就生成出来了。这个数据库升级的DDL和DML都有了,主要生成好还是要多测试下,毕竟升级有风险,升级前请做好充足的备份。

  • 相关阅读:
    提高优化PHP代码质量的9个技巧
    360打破欧美垄断勇夺黑客攻防大赛“世界冠军”
    php中ckeditor的配置方法
    vue 动态生成 el-checkbox-group 遇到的v-model绑定问题及解决方法
    在vue-cli中,使用 sass-resources-loader 实现全局变量、方法注入
    wp rest api 授权方法步骤(使用JWT Authentication插件)
    react redux dva 多次循环异步取数据的问题解决
    jquery.validate.js在IE8下报错不运行
    ichart.js绘制虚线 ,平均分虚线
    rgb转16进制 简单实现
  • 原文地址:https://www.cnblogs.com/hainange/p/6153005.html
Copyright © 2020-2023  润新知