一种可能的SQL脚本管理方式
来源:互联网 发布:手机js脚本 编辑:程序博客网 时间:2024/05/21 07:57
如果大家做过升级包,也许会有同感,即升级中最复杂的,就是数据库脚本的升级。
因为.class,.jsp等文件,即使2个版本天差地别,大不了全量替换就可以了。但是对于sql脚本,就没有这么简单了。哪怕不考虑业务数据备份的问题,光是表结构和初始化数据的变更,就已经很麻烦了
对于集中部署的应用,这种情况还好一些,如果应用是在各个局点有不同的版本,那就需要制作不同的升级包,这个麻烦就被更加放大了
以前想到了一些管理手段来缓解这个问题,比如将sql脚本集中存放,比如对于sql的变动加以详细记录等
今天是要总结一个新的方法,听同事说起的,我觉得可能是可行的,在此记录一下。下个版本实践试试看
举例来说,应用第1个版本,安装包里有一系列sql脚本,比如说叫做init.sql,里面有一句sql是
第2个版本,需要对这条初始化数据进行修改,有一种办法是,修改init.sql为
这样的话,如果一个局点,已经跑着第1个版本,现在要升级到第2个版本,那就需要写一个新的升级脚本update.sql
我的同事就提出一个方案,即在版本发布以后,就不对原有的sql脚本进行修改,而是根据版本提供升级脚本,放在相应的目录里。
比如说
/version1.0/init.sql
/version1.1/update_1.1.sql
/version1.2/update_1.2.sql
然后在安装脚本里提供入口,如果是1.0版本的安装包,就仅仅执行init.sql;如果是1.1版本的安装包,就执行init.sql和update_1.1.sql
如果不是要全量安装,而是要升级的话,就在升级脚本中提供入口,执行相应的脚本就可以了
这个方式我想过去觉得是可行的,大家有没有别的意见?
因为.class,.jsp等文件,即使2个版本天差地别,大不了全量替换就可以了。但是对于sql脚本,就没有这么简单了。哪怕不考虑业务数据备份的问题,光是表结构和初始化数据的变更,就已经很麻烦了
对于集中部署的应用,这种情况还好一些,如果应用是在各个局点有不同的版本,那就需要制作不同的升级包,这个麻烦就被更加放大了
以前想到了一些管理手段来缓解这个问题,比如将sql脚本集中存放,比如对于sql的变动加以详细记录等
今天是要总结一个新的方法,听同事说起的,我觉得可能是可行的,在此记录一下。下个版本实践试试看
举例来说,应用第1个版本,安装包里有一系列sql脚本,比如说叫做init.sql,里面有一句sql是
insert into USER values ("1","kitty","female");
第2个版本,需要对这条初始化数据进行修改,有一种办法是,修改init.sql为
insert into USER values ("1","superman","male");
这样的话,如果一个局点,已经跑着第1个版本,现在要升级到第2个版本,那就需要写一个新的升级脚本update.sql
update USER set NAME = 'superman', Sex = 'male' WHERE ID = '1';
我的同事就提出一个方案,即在版本发布以后,就不对原有的sql脚本进行修改,而是根据版本提供升级脚本,放在相应的目录里。
比如说
/version1.0/init.sql
/version1.1/update_1.1.sql
/version1.2/update_1.2.sql
然后在安装脚本里提供入口,如果是1.0版本的安装包,就仅仅执行init.sql;如果是1.1版本的安装包,就执行init.sql和update_1.1.sql
如果不是要全量安装,而是要升级的话,就在升级脚本中提供入口,执行相应的脚本就可以了
这个方式我想过去觉得是可行的,大家有没有别的意见?
- 一种可能的SQL脚本管理方式
- SQL Network error 26的一种可能
- 可能是一种通杀的waf bypass方式
- mysql sql总出错的一种可能 mysql关键字
- sql主键的一种形成方式
- 一种比较健壮的脚本对象内存管理方案
- System Error Code 111 The file name is too long的一种可能的解决方式
- java.lang.UnsatisfiedLinkError,findLibrary returned null的一种可能的解决方式
- iOS一种多线程的管理方式——GCD
- 队列以一种先进先出的方式管理数据
- gopkg:一种方便的go pakcage管理方式
- 猴子理论——高效管理的一种方式
- 腾讯Bug管理——一种愉悦的开发方式
- Mysql导出sql脚本的正确方式!
- K3 取消批次管理的SQL脚本
- Sql Server 2005 中解决死锁的一种方式
- SQL Server2005维护计划一种错误的处理方式
- Sql Server 2005 中解决死锁的一种方式
- 一些文墨生香的句子
- 版本管理及升级包制作小结
- spring3.0设置定时任务
- 小读spring ioc源码(五)——BeanDefinitionDocumentReader
- 在程序开始运行时,系统自动打开3个标准文件:标准输入、标准输出、标准出错输出
- 一种可能的SQL脚本管理方式
- 图片压缩
- 一种异步保存的思路
- HttpClient的超时,以及jdk的调试
- Pro Android学习笔记(三一):Menu(2):扩展、图片、子菜单
- http协议简单总结
- 不同应用间互相调用,兼谈重用性
- 关于端口
- ARM920T协处理器(CP15)指令表