[发明专利]一种数据库升级脚本的生成方法和装置无效
申请号: | 201010287378.6 | 申请日: | 2010-09-16 |
公开(公告)号: | CN102402559A | 公开(公告)日: | 2012-04-04 |
发明(设计)人: | 周源 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京派特恩知识产权代理事务所(普通合伙) 11270 | 代理人: | 迟姗;蒋雅洁 |
地址: | 518057 广东省深圳市南山*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据库 升级 脚本 生成 方法 装置 | ||
技术领域
本发明涉及数据库升级技术领域,尤其涉及一种电信管理领域的数据库升级脚本的生成方法和装置。
背景技术
目前,在电信管理项目开发中,根据应用的需要需开发和维护多个代码分支,与此对应的是不同版本间的升级,所述版本的升级包括:程序的升级、配置文件的升级和数据库的升级。其中,数据库的升级是最繁琐的,数据库升级是通过执行事先写好的数据库脚本来实现的。由于电信业务的复杂性导致网元模型的变化比较大,而且,网元模型等因素的变化使得数据库也要相应变化,又由于数据库里的数据量较大,字段较多,所以人工编写数据库脚本的工作量很大,且容易出错。
为了解决编写数据库脚本工作量大的问题,现有技术中已提出一种自动生成数据库升级脚本的方法,该方法通过比较数据库的源版本脚本文件和目标版本脚本文件得到数据库表结构的变化,根据数据库表结构的变化生成升级脚本。但是,仅仅比较数据库表结构的变化是不够的,因为数据库表中还存有对应的记录,也就是数据,升级后数据库表中的数据也将会发生变化。因此,现有方法生成的数据库升级脚本未能全面反映数据库的变化情况,可读性较差;此外,由于生成的数据库升级脚本中不包括数据的变化,且未实现原有数据的备份,因此无法实现版本的回退。
发明内容
有鉴于此,本发明的主要目的在于提供一种数据库升级脚本的生成方法和装置,使得生成的升级脚本既可描述数据库表结构的变化,还可描述表中数据的变化,且升级脚本可实现回退。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种数据库升级脚本的生成方法,设置并存储与数据库表中的数据变化对应的升级规则描述文件;该方法还包括:
通过分析建表结构化查询语言SQL语句得到数据库升级前后的表结构,并对数据库升级前后表结构进行比较;解析升级规则描述文件,并依据解析结果以及所述表结构变化的比较结果生成数据库升级脚本。
其中,所述升级规则描述文件中包括:原表中的原始数据升级为新表中的新数据所依据的算法、以及升级后新表中新增字段的值。
其中,所述升级规则描述文件为可扩展标记语言XML文件格式、或者文本文件格式。
其中,所述解析升级规则描述文件为:
对XML文件格式或者文本文件格式的升级规则描述文件进行分析,按表名、字段名和缺省值三部分将升级规则描述文件中的内容对应归类,将各部分内容对应存储于表项为表名、字段名和缺省值的表中。
其中,所述表名和字段名为升级后所得新表中的表名和字段名;所述缺省值为:升级规则描述文件中的原始数据升级为新数据所依据的算法、或者升级后新表中新增字段的值。
其中,所述生成的数据库升级脚本中包括升级语句和回退语句。
上述方案中,所述生成数据库升级脚本的过程中,该方法还包括:
生成用于表示数据库脚本文件中除建表SQL语句之外的创建表空间的SQL语句;创建用户、用户授权的SQL语句;创建序列号的SQL语句;创建视图的SQL语句;创建存储过程的SQL语句;创建触发器的SQL语句和静态配置数据的插入语句的变化的脚本;还生成用于控制升级操作的脚本。
本发明还提供了一种数据库升级脚本的生成装置,包括词法分析模块和语法分析模块;该装置还包括:升级规则存储模块、升级规则解析模块和升级脚本生成模块;其中,
所述升级规则存储模块,用于存储已设置的数据库表中的数据变化对应的升级规则描述文件;
所述升级规则解析模块,用于解析升级规则存储模块中存储的升级规则描述文件,并将解析结果发送给升级脚本生成模块;
所述升级脚本生成模块,用于对语法分析模块所发的数据库升级前后的表结构进行比较,并依据升级规则解析模块所发的解析结果以及所述数据库升级前后表结构的比较结果生成数据库升级脚本。
其中,所述升级规则解析模块执行的解析操作,具体为:
调用并分析升级规则存储模块中存储的升级规则描述文件,按表名、字段名和缺省值三部分将升级规则描述文件中的内容对应归类,将各部分内容对应存储于表项为表名、字段名和缺省值的表中。
其中,所述升级脚本生成模块,还用于生成用于表示数据库脚本文件中除建表SQL语句之外的创建表空间的SQL语句;创建用户、用户授权的SQL语句;创建序列号的SQL语句;创建视图的SQL语句;创建存储过程的SQL语句;创建触发器的SQL语句和静态配置数据的插入语句的变化的脚本,以及生成用于控制升级操作的脚本。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010287378.6/2.html,转载请声明来源钻瓜专利网。