`

一种可能的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

如果不是要全量安装,而是要升级的话,就在升级脚本中提供入口,执行相应的脚本就可以了

这个方式我想过去觉得是可行的,大家有没有别的意见?
分享到:
评论
1 楼 diyunpeng 2012-11-03  
我之前管理就是这样管理,在数据库里面存放一个版本记录表,然后在安装总入口处执行,查看需要安装那些升级包,注意的就是要按照时间排序,譬如12.11.11代表2012年11月11日做的升级包,这是我的思路,总体运行还可以,这样弄之后,即使是分布式多点部署了,也没问题,安装脚本会自动执行对应的升级包。

相关推荐

    SQL脚本生成器

    3.3、增量脚本指在执行主脚本或副脚本之后,根据需求对某个表添加/修改约束(主外键约束,长度约束等),添加/修改字段/添加数据等情况对数据库结构改变处理的一种行为脚本。 1.2作用 1、 快速产出自定义规则...

    bat+sqlcmd 批量运行脚本

    bat+sqlcmd 批量运行脚本 Hello,此BAT脚本可以帮助开发人员将某文件夹下所有SQL脚本按文件名依次在指定数据库中批量执行。不用忍受powershell invoke-sqlcmd 的笨重,在指运行时多一种选择。

    Windows环境下批量执行Oracle的SQL的脚本

    个人博客中的Windows环境下批量执行Oracle的SQL的一种方法这篇文章的附件 个人博客中的Windows环境下批量执行Oracle的SQL的一种方法这篇文章的附件

    SpringBoot+Vue汽车租赁管理系统 java毕业设计 源码+sql脚本+论文+PPT完整版

    SpringBoot+Vue汽车租赁管理系统 java毕业设计 源码+sql脚本+论文+PPT【完整版】 数据库是mysql 快速发展的社会中,人们的生活水平都在提高,生活节奏也在逐渐加快。为了节省时间和提高工作效率,越来越多的人选择...

    Springboot+Vue停车场管理系统 java毕业设计 源码+sql脚本+论文

    停车场管理是用计算机管理机动车辆的档案,运营管理的一种计算机应用技术的创新,在计算机还未普及之前停车管理都是由工作人员手工抄写的方式来操作的.现在一般的停车场管理都是采用计算机作为工具的实用的计算机智能...

    SQL(Structured Query Language)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数据库脚本文件的扩展名。

    SQL(Structured Query Language)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数据库脚本文件的扩展名。

    【毕业设计】ThinkPHP5多小区物业管理系统源码PHP物业管理系统(多小区支持)(源码+SQL脚本).zip

    系统内置了以下4种角色: 超级管理员、小区管理员、小区普通员工、业主 每一种角色都有不同的操作权限。 同时也可以根据需要,自定义多种角色,然后为其分配相应的操作权限。 系统配置 主要模块:系统基础配置、...

    SQL省市县脚本支持两种表结构

    SQL脚本支持两种表结构,一种是3个表,另一种是单个表根据父级ID获取下级

    论文研究-一种基于支持向量机的跨站脚本漏洞检测技术.pdf

    跨站脚本是一种常见的针对Web应用程序安全的漏洞攻击方式。恶意用户利用漏洞将恶意脚本注入网页之中,当用户浏览该网页时,便会触发脚本,导致攻击行为产生。为此,针对各种变形跨站脚本攻击难以检测问题,对一种...

    SQL Server连接失败错误及解决方法

    一般而言,有以下两种连接 SQL Server 的方式,一是利用 SQL Server 自带的客户端工具,如企业管理器、查询分析器、事务探查器等;二是利用用户自己开发的客户端程序,如ASP 脚本、VB程序等,客户端程序中又是利用 ...

    【毕业设计】基于SpringBoot+Mybatis实现的教务管理系统(前后端源码+SQL脚本).zip

    【毕业设计】基于SpringBoot+Mybatis实现的教务管理系统(前后端源码+SQL脚本).zip 简介 这个项目是一个简单的教务查询系统,其中有三种角色:管理员,教师,学生。三种角色都有相应的权限,其中: 管理员:对课程...

    删除SQLServer2008数据库日志文件脚本

    删除SQLServer2008数据库日志文件脚本,MSSql2005的ldf缩小方法已经不适用MSSql2008了,MSSql2008采用了一种新的方式用来把ldf文件缩小,效果很不错;

    asp sql 学生成绩管理系统

    2.首先将你的数据库还原,打开sql2000企业管理器新建一个score数据库,建好后在其上右键还原数据库,然后添加文件选中从设备添加,找到score文件夹下的score文件,如果看不到请将score文件添加后缀名.bat,然后重新...

    小结SQLServer连接失败错误及解决

    一般而言,有以下两种连接SQLServer的方式,一是利用SQLServer自带的客户端工具,如企业管理器、查询分析器、事务探查器等;二是利用用户自己开发的客户端程序,如ASP脚本、VB程序等,客户端程序中又是利用ODBC或者...

    Springboot+Vue个人博客 java毕业设计 源码+sql脚本+论文 完整源码

    博客,又译为网络日志、部落格或部落阁等,是一种通常由个人管理、不定期张贴新的文章的网站。博客它经常是由简短且经常更新的帖子构成,它可以发表有关个人构思,日记,或者诗歌,散文,小说等等。博客可以是你纯粹...

    SQL转PDM文件模型

    owerDesigner是一种数据库建模和设计工具,它的主要用途和功能包括: 数据建模:可以用于创建和维护数据库模型,包括物理数据模型和逻辑数据模型。 数据字典:提供了数据字典,用于定义数据表、列、关系等对象的...

    sql结构化查询语句

    结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。 结构化查询...

    sql语句基础.docx

    SQL即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。SQL语句无论是...

    2020版全国省市区县数据大全----SQL脚本

    自己以前的数据库发现部分很多区县被划分其他省去了,所以今天特别更新了我以前的全国省市区县数据,自带数据模型,新增中国地理七大区域划分,可执行SQL一键导入,可执行SQL语句导入,方法任选总有一种适合你。

    SQL-Server-2022&SSMS

    SQL Server Management Studio (SSMS) 是一种集成环境,用于管理从 SQL Server 到 Azure SQL 数据库的任何 SQL 基础结构。 SSMS 提供用于配置、监视和管理 SQL Server 和数据库实例的工具。 使用 SSMS 部署、监视和...

Global site tag (gtag.js) - Google Analytics