专利名称:一种数据库升级的方法及装置的制作方法
技术领域:
本发明涉及数据通信领域,尤其涉及一种数据库升级的方法和装置。
背景技术:
数据库在设备中起着非常重要的作用,存储着设备当前的配置等关键信息,它的正确与否直接影响着设备是否正常运行。网络设备在运行过程中,由于增加新的功能或者问题的修复等,可能需要更换软件版本。在数据库升级时,如果数据库不兼容,则会导致用户配置的紊乱,重新做一遍配置会很繁琐,并且浪费时间和精力,且以引起网络长时间的中断
发明内容
·
有鉴于此,本发明提供一种数据库升级的方法和装置,升级方法和装置简洁、方便。升级之后能够实现配置兼容,且在升级过程中可不中断业务。本发明提供一种实现数据库升级的方法,适用于关系型数据库,所述方法包括步骤a、建立新数据库,所述新数据库为新版本数据库;步骤b、获取新数据库与旧数据库的共有结构,根据所述共有结构组装升级语句,所述旧数据库为旧版本数据库;步骤C、对新数据库批量执行所述升级语句;步骤d、用新数据库替换旧数据库,完成数据库的升级。本发明同时一种实现数据库升级的装置,适用于关系型数据库,所述装置包括创建模块,用于建立新数据库,所述新数据库为新版本数据库;升级模块,用于获取新数据库与旧数据库的共有结构,根据所述共有结构组装升级语句,所述旧数据库为旧版本数据库;执行模块,用于对新数据库批量执行所述升级语句;替换模块,用新数据库替换旧数据库,完成数据库的升级。由此可见,本发明通过先建立需要升级的数据库版本,然后获取新旧数据库的共有结构后执行升级语句来进行数据库的升级,操作简洁方便,升级之后可实现配置兼容,且可以在不中断业务的情况下升级。
图I是本发明实施例的方法流程示意图。图2是本发明另一实施例的具体方法流程示意图。图3是本发明实施例的装置逻辑结构图。图4是本发明实施例升级模块子模块逻辑结构图。图5是本发明实施例组装升级模块子模块逻辑结构图。
具体实施例方式本发明实施例提供一种数据库升级的方法和装置,所述方法和装置适用于关系型数据库。所述关系型数据库是指采用了关系模型进行组织数据的数据库。所述的关系模型指二维表格模型。本发明实施例通过先建立新数据库,然后获取新数据库与旧数据库的共有结构,根据所述共有结构组装升级语句,再对新数据库批量执行所述升级语句,最后用新数据库替换旧数据库,完成数据库的升级。为使本发明实施例技术方案更加清楚和明白,以下结合本发明具体实施例加以详细说明。如图I所示,为本发明提供的一种实现数据库升级的方法,适用于关系型数据库,所述方法包括步骤a、建立新数据库,所述新数据库为新版本数据库;在数据库升级的初始阶段,首先根据数据库的建表语句建立新的数据库,所述新 数据库为计划升级的新版本数据库。步骤b、获取新数据库与旧数据库的共有结构,根据所述共有结构组装升级语句,所述旧数据库为旧版本数据库;所述共有结构为新数据库和旧数据库中表名相同的数据表中相同的列名。关系型数据库是由二维表及其之间的联系组成的一个数据组织,每一张二维表都有一个表名。每一个二维表有若干行和列组成,行在数据库中用元组表示,列在数据库中用字段表示,指每个实体的属性,用于标识元组。当新数据库建立完成之后,同时打开新数据库和旧数据库,获取新数据库与旧数据库的共有结构,即获取新数据库和旧数据库中表名相同的数据表中相同的列名,然后组装与所述共有结构相对应的升级语句,例如insert或replace语句,但并不限于此语句。步骤C、对新数据库批量执行所述升级语句;当获取完成新数据库和旧数据库中全部的共有结构,并组装所有与所述共有结构相对应的升级语句之后,对新数据库批量执行所述的升级语句,进行升级。步骤d、用新数据库替换旧数据库,完成数据库的升级。当执行升级语句完成之后,旧数据库中的数据已经拷贝到新数据库中,因此用新数据库替换旧数据库,完成数据库的升级。进一步地,所述步骤b具体包括步骤bl、从新数据库中获取一个表名;步骤b2、查找旧数据库是否存在与获取的表名相同的表名,若是,执行步骤b3,若否,执行步骤b4;步骤b3、根据新数据库和旧数据库中,具有所述相同的表名的数据表中的相同列名,组装升级语句;步骤b4、判断是否已经获取完新数据库中的所有表名,若是,执行步骤C,若否,从新数据库中获取下一个表名后返回步骤b2。进一步地,所述步骤b3具体包括步骤b31、从新数据表中获取一个列名,所述的新数据表是指新数据库中的表;步骤b32、查找旧数据表是否存在与获取的列名相同的列名,若是,执行步骤b33,若否,则执行步骤b34,所述旧数据表是指旧数据库中的表;
步骤b33、组装升级语句;步骤b34、判断是否已经获取完新数据表中所有列名,若是,则执行步骤b4,若否,从数据表中获取下一个列名之后返回步骤b32。如图2所示为本发明另一具体实施例的方法流程示意图。所述包括步骤I、根据建表语句建立新数据库;步骤2、从新数据库中获取一个表名,所述新数据库为欲升级的新版本数据库;步骤3、查找旧数据库中是否存在与获取的表名相同的表名,若是,则执行步骤4,若否,则执行步骤8,所述的旧数据库为旧版本数据库;步骤4、从新数据表中获取一个列名,所述的新数据表为新数据库中的数据表; 步骤5、查找旧数据表中是否存在与获取的列名相同的列名,若是,则执行步骤6,若否则执行步骤7,所述的旧数据表为旧数据库中的数据表;步骤6、组装升级语句;步骤7、判断是否已经获取完新数据表中所有列名,若是,则执行步骤8,若否,则从数据表中获取下一个列名之后返回步骤5 ;步骤8、判断是否已经获取完新数据库中所有的表名,若是,则执行步骤9,若否,则从数据库中获取下一个表名之后返回步骤3 ;步骤9、对新数据库批量执行所述升级语句;步骤10、用新数据库替换旧数据库,完成数据库的升级。 请参考图3,本发明实施例同时提供一种实现数据库升级的装置,适用于关系型数据库,其特征在于,所述装置包括创建模块,用于建立新数据库,所述新数据库为新版本数据库;在数据库升级的初始阶段,首先创建模块根据数据库的建表语句建立新的数据库,所述新数据库为计划升级的新版本数据库。升级模块,用于获取新数据库与旧数据库的共有结构,根据所述共有结构组装升级语句,所述旧数据库为旧版本数据库;所述共有结构为新数据库和旧数据库中表名相同的数据表中相同的列名。关系型数据库是由二维表及其之间的联系组成的一个数据组织,每一张二维表都有一个表名。每一个二维表有若干行和列组成,行在数据库中用元组表示,列在数据库中用字段表示,指每个实体的属性,用于标识元组。当新数据库建立完成之后,同时打开新数据库和旧数据库,升级模块获取新数据库与旧数据库的共有结构,即获取新数据库和旧数据库中表名相同的数据表中相同的列名,然后组装与所述共有结构相对应的升级语句,例如insert或replace语句,但并不限于此语句。执行模块,用于对新数据库批量执行所述升级语句;当获取完成新数据库和旧数据库中全部的共有结构,并组装所有与所述共有结构相对应的升级语句之后,执行模块对新数据库批量执行所述的升级语句,进行升级。替换模块,用于新数据库替换旧数据库,完成数据库的升级。当执行升级语句完成之后,旧数据库中的数据已经拷贝到新数据库中,因此替换模块用新数据库替换旧数据库,完成数据库的升级。进一步地,请参考图4,所述的一种实现数据库升级的装置,其中所述升级模块进一步包括获取模块,用于从新数据库中获取一个表名;查找模块,用于查找旧数据库是否存在与获取的表名相同的表名,若是,则触发组装升级模块,若否,则触发判断模块;组装升级模块,用于根据新数据库和旧数据库中,具有所述相同的表名的数据表中的相同列名,组装升级语句;判断模块,用于判断是否已经获取完新数据库中的所有表名,若是,则转至执行模块,若否,从新数据库中获取下一个表名后转至查找模块。进一步地,请参考图5,所述的一种实现数据库升级的装置中的升级模块,其中所述组装升级模块进一步包括·
获取子模块,用于从新数据表中获取一个列名,所述的新数据表是指新数据库中的表;查找子模块,用于查找旧数据表是否存在与获取的列名相同的列名,若是,触发组装升级子模块,若否,触发判断子模块,所述旧数据表是指旧数据库中的表;组装升级子模块,用于组装升级语句;判断子模块,用于判断是否已经获取完新数据表中所有列名,若是,则转至判断模块,若否,从数据表中获取下一个列名之后返回查找子模块。以上所述仅仅为本发明较佳的实现方式,任何基于本发明精神所做出的等同的修改皆应涵盖于本发明的权利要求范围中。
权利要求
1.一种实现数据库升级的方法,适用于关系型数据库,其特征在于,所述方法包括 步骤a、建立新数据库,所述新数据库为新版本数据库; 步骤b、获取新数据库与旧数据库的共有结构,根据所述共有结构组装升级语句,所述旧数据库为旧版本数据库; 步骤C、对新数据库批量执行所述升级语句; 步骤d、用新数据库替换旧数据库,完成数据库的升级。
2.如权利要求I所述的方法,其特征在于 所述共有结构为新数据库和旧数据库中表名相同的数据表中相同的列名。
3.如权利要求I所述的方法,其特征在于,所述步骤b具体包括 步骤bl、从新数据库中获取一个表名; 步骤b2、查找旧数据库是否存在与获取的表名相同的表名,若是,执行步骤b3,若否,执行步骤b4; 步骤b3、根据新数据库和旧数据库中,具有所述相同的表名的数据表中的相同列名,组装升级语句; 步骤b4、判断是否已经获取完新数据库中的所有表名,若是,执行步骤C,若否,从新数据库中获取下一个表名后返回步骤b2。
4.如权利要求3所述的方法,其特征在于,所述步骤b3具体包括 步骤b31、从新数据表中获取一个列名,所述的新数据表是指新数据库中的表; 步骤b32、查找旧数据表是否存在与获取的列名相同的列名,若是,执行步骤b33,若否,则执行步骤b34,所述旧数据表是指旧数据库中的表; 步骤b33、组装升级语句; 步骤b34、判断是否已经获取完新数据表中所有列名,若是,则执行步骤b4,若否,从数据表中获取下一个列名之后返回步骤b32。
5.一种实现数据库升级的装置,适用于关系型数据库,其特征在于,所述装置包括 创建模块,用于建立新数据库,所述新数据库为新版本数据库; 升级模块,用于获取新数据库与旧数据库的共有结构,根据所述共有结构组装升级语句,所述旧数据库为旧版本数据库; 执行模块,用于对新数据库批量执行所述升级语句; 替换模块,用于新数据库替换旧数据库,完成数据库的升级。
6.如权利要求5所述的装置,其特征在于 所述共有结构为新数据库和旧数据库中表名相同的数据表中相同的列名。
7.如权利要求5所述的装置,其特征在于,所述升级模块进一步包括 获取模块,用于从新数据库中获取一个表名; 查找模块,用于查找旧数据库是否存在与获取的表名相同的表名,若是,则触发组装升级模块,若否,则触发判断模块; 组装升级模块,用于根据新数据库和旧数据库中,具有所述相同的表名的数据表中的相同列名,组装升级语句; 判断模块,用于判断是否已经获取完新数据库中的所有表名,若是,则转至执行模块,若否,从新数据库中获取下一个表名后转至查找模块。
8.如权利要求7所述的方法,其特征在于,所述组装升级模块包括 获取子模块,用于从新数据表中获取一个列名,所述的新数据表是指新数据库中的表; 查找子模块,用于查找旧数据表是否存在与获取的列名相同的列名,若是,触发组装升级子模块,若否,触发判断子模块,所述旧数据表是指旧数据库中的表; 组装升级子模块,用于组装升级语句; 判断子模块,用于判断是否已经获取完新数据表中所有列名,若是,则转至判断模块,若否,从数据表中获取下一个列名之后返回查找子模块。
全文摘要
本发明提供一种数据库升级的方法和装置。所述方法包括通过先建立新数据库,然后获取新数据库与旧数据库的共有结构,根据所述共有结构组装升级语句,再对新数据库批量执行所述升级语句,最后用新数据库替换旧数据库,完成数据库的升级。通过本发明,数据库升级之后能够实现配置兼容,且在升级过程中可不中断业务,发明方法简便、容易使用。
文档编号G06F17/30GK102902818SQ20121041793
公开日2013年1月30日 申请日期2012年10月26日 优先权日2012年10月26日
发明者李飞鹏, 李常青 申请人:杭州迪普科技有限公司