一种设备跨版本升级方法和装置制造方法

文档序号:6546436阅读:192来源:国知局
一种设备跨版本升级方法和装置制造方法
【专利摘要】本发明提供了一种设备跨版本升级方法和装置,其中,所述方法包括:生成与数据库中的旧版本数据表对应的第一数据库文件;运行新版本软件,并在数据库中创建与新版本软件相对应的新版本数据表,实时接收对新版本数据表的操作;生成与新版本数据表对应的第二数据库文件;对第一数据库文件和第二数据库文件中存储的表结构信息进行比对,获得表结构差异信息;依据表结构差异信息和第一数据库文件中的所述旧版本数据表中的数据,生成新版本数据表中的数据;将生成的新版本数据表中的数据导入新版本数据表。通过本发明,能够实时继承升级过程中的产生的数据,同时还实现了设备内部的版本升级,避免了多余的版本升级处理流程。
【专利说明】一种设备跨版本升级方法和装置
【技术领域】
[0001]本发明涉及通信【技术领域】,特别是涉及一种设备跨版本升级方法和装置。
【背景技术】
[0002]基于嵌入式Mysql数据库的电信设备跨版本升级,基本分为版本下载、升级任务构造和版本升级三个过程。其中,版本升级过程分为软件版本升级和数据升级两个部分。在跨版本进行升级时,Mysql数据库中的数据表结构在升级前后会发生变化,而由于Mysql数据库不具备像Oracle等大型数据库具有自动升级功能,因此,嵌入式设备对Mysql数据库中数据进行跨版本升级是数据升级的难点。
[0003]现有的两种基于嵌入式Mysql数据库的电信设备的跨版本数据升级方法如下:
[0004]一种为人工制作数据方法,即人工使用Mysql数据库客户端导出待升级版本数据文件,根据新版本的数据表结构对导出的待升级数据文件进行修改,制作成符合新版本数据表结构的数据文件。把修改后的数据文件打包到最终的升级版本包中,此时,最终的升级版本包包括软件版本和数据文件。然后,按照基本升级流程对电信设备进行升级。
[0005]另一种为临时表过渡方法,即使用工具分析升级前后的数据表结构差异,把分析出来的数据表差异部分生成差异临时表作为过渡导入到数据库中;再使用工具把表结构无变化的数据表和表结构变化的数据表以及相关的数据最终组合为升级后的数据表结构和数据。
[0006]现有的人工制作数据方法,一方面,由于需要人工对Mysql数据库中数据表结构根据升级后的数据表结构进行离线修改,因此效率低、易出错。另一方面,由于对数据表结构的修改是离线进行的,而此时,电信设备仍是在运行,那么就会造成电信设备运行过程中的产生的动态数据无法在修改的数据中继承,从而造成动态数据损耗。
[0007]而临时表过渡方法虽然通过使用工具解放了人力,比人工制作数据效率有所改善,但因为差异临时表是由工具分析得来,因此软件版本不支持对差异临时表进行相关操作。这就使得新版本数据升级完成前,新软件版本无法动态对数据库中的数据表信息进行控制,那么在此期间生成的数据就无法继承,同样也会造成动态数据损耗。再就是,临时表过渡方法需要人为将数据信息导出,并将组合后的数据导入,不能在电信设备内部完成,带来多余的处理流程。

【发明内容】

[0008]本发明提供了一种设备版本升级方法和装置,以解决现有的版本升级过程中,存在的动态数据损耗以及不能在设备内部完成版本升级的问题。
[0009]为了解决上述问题,本发明公开了一种设备跨版本升级方法,包括:生成与数据库中的旧版本数据表对应的第一数据库文件,其中,所述旧版本数据表为对应于旧版本软件的数据表,所述第一数据库文件中包括:所述旧版本数据表的表结构信息,和所述旧版本数据表中的数据;运行新版本软件,并在所述数据库中创建与所述新版本软件相对应的新版本数据表,实时接收对所述新版本数据表的操作;生成与所述新版本数据表对应的第二数据库文件,其中,所述第二数据库文件中包括:所述新版本数据表的表结构信息;对所述第一数据库文件和所述第二数据库文件中存储的表结构信息进行比对,获得表结构差异信息;依据所述表结构差异信息和所述第一数据库文件中的所述旧版本数据表中的数据,生成所述新版本数据表中的数据;将生成的所述新版本数据表中的数据导入所述新版本数据表。
[0010]优选地,所述对所述第一数据库文件和所述第二数据库文件中存储的表结构信息进行比对,获得表结构差异信息步骤包括:逐行对所述第一数据库文件和所述第二数据库文件中存储的相对应的各个数据表的表结构信息进行比对,获得各个数据表的表结构差

[0011]优选地,所述依据所述表结构差异信息和所述第一数据库文件中的所述旧版本数据表中的数据,生成所述新版本数据表中的数据步骤包括:依据获得的所述各个数据表的表结构差异,结合所述第一数据库文件中、各个旧版本数据表中未发生变化的表结构部分对应的数据,和设定的、对应于所述各个数据表的发生表结构变化部分的默认数据,在所述第二数据库文件中生成所述新版本数据表中的数据。
[0012]优选地,所述将生成的所述新版本数据表中的数据导入所述新版本数据表步骤包括:在使用所述第二数据库文件中的所述新版本数据表中的数据,向所述新版本数据表中导入数据时,逐条逐字段判断所述新版本数据表中待导入的字段下是否已经存储有数据;若已存储,则放弃该字段的导入;若未存储,则将该字段对应的数据导入所述新版本数据表中。
[0013]优选地,所述第一数据库文件和所述第二数据库文件均为SQL文件;所述第一数据库文件与所述第二数据库文件中的表结构信息与数据信息分开存储。
[0014]为了解决上述问题,本发明还公开了一种设备跨版本升级装置,包括:第一文件生成模块,用于生成与数据库中的旧版本数据表对应的第一数据库文件,其中,所述旧版本数据表为对应于旧版本软件的数据表,所述第一数据库文件中包括:所述旧版本数据表的表结构信息,和所述旧版本数据表中的数据;创建模块,用于运行新版本软件,并在所述数据库中创建与所述新版本软件相对应的新版本数据表,实时接收对所述新版本数据表的操作;第二文件生成模块,用于生成与所述新版本数据表对应的第二数据库文件,其中,所述第二数据库文件中包括:所述新版本数据表的表结构信息;比对模块,用于对所述第一数据库文件和所述第二数据库文件中存储的表结构信息进行比对,获得表结构差异信息;数据生成模块,用于依据所述表结构差异信息和所述第一数据库文件中的所述旧版本数据表中的数据,生成所述新版本数据表中的数据;数据导入模块,用于将生成的所述新版本数据表中的数据导入所述新版本数据表。
[0015]优选地,所述比对模块对所述第一数据库文件和所述第二数据库文件中存储的表结构信息进行比对,获得表结构差异信息时,逐行对所述第一数据库文件和所述第二数据库文件中存储的相对应的各个数据表的表结构信息进行比对,获得各个数据表的表结构差

[0016]优选地,所述数据生成模块依据所述表结构差异信息和所述第一数据库文件中的所述旧版本数据表中的数据,生成所述新版本数据表中的数据时:依据获得的所述各个数据表的表结构差异,结合所述第一数据库文件中、各个旧版本数据表中未发生变化的表结构部分对应的数据,和设定的、对应于所述各个数据表的发生表结构变化部分的默认数据,在所述第二数据库文件中生成所述新版本数据表中的数据。
[0017]优选地,所述数据导入模块将生成的所述新版本数据表中的数据导入所述新版本数据表时:在使用所述第二数据库文件中的所述新版本数据表中的数据,向所述新版本数据表中导入数据时,逐条逐字段判断所述新版本数据表中待导入的字段下是否已经存储有数据;若已存储,则放弃该字段的导入;若未存储,则将该字段对应的数据导入所述新版本数据表中。
[0018]优选地,所述第一数据库文件和所述第二数据库文件均为SQL文件;所述第一数据库文件与所述第二数据库文件中的表结构信息与数据信息分开存储。
[0019]与现有技术相比,本发明具有以下优点:
[0020]本发明提供的设备跨版本升级方案,在生成新版本数据表中的数据的过程中,新版本软件便可以对新版本数据表进行操作,实时将升级过程中设备的软件系统产生的数据写入到数据表中。因此,通过本发明提供的设备跨版本升级方案,能够有效避免现有的设备跨版本升级方案无法在新版本数据升级过程中对数据表进行控制,从而带来的数据升级期间生成的数据无法继承造成动态损耗的问题。同时,本发明提供的设备跨版本升级方案在设备内部根据两个数据库文件生成新版本数据表中的数据,无需像现有技术中的升级方案需要人工将数据导入、导出,实现了设备内部的版本升级,避免了多余的版本升级处理流程。
【专利附图】

【附图说明】
[0021]图1是根据本发明实施例一的一种设备跨版本升级方法的步骤流程图;
[0022]图2是根据本发明实施例二的一种设备跨版本升级方法的步骤流程图;
[0023]图3是根据本发明实施例三的一种设备跨版本升级方法的步骤流程图;
[0024]图4是根据本发明实施例四的一种设备跨版本升级装置的结构框图。
【具体实施方式】
[0025]为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本发明作进一步详细的说明。
[0026]实施例一
[0027]参照图1,示出了根据本发明实施例一的一种设备跨版本升级方法的步骤流程图。
[0028]本实施例的设备跨版本升级方法的步骤包括:
[0029]步骤S102:服务器生成与数据库中的旧版本数据表对应的第一数据库文件。
[0030]其中,旧版本数据表为对应于旧版本软件的数据表,第一数据库文件中包括:旧版本数据表的表结构信息,和旧版本数据表中的数据。如,旧版本软件对应的关键表,以及一些非关键表。其中,关键表如设备信息配置表、告警基础配置表等,这些关键表用于存储旧版本的属性信息,而非关键表则用于存储设备用户的一些相关数据。第一数据库文件可以为任意的数据库所支持的格式的文件。例如:服务器可以通过Linux Shell脚本生成SQL (Structured Query Language,结构化查询语言)文件,还可以是通过工具生成的其他格式的数据库文件。
[0031]步骤S104:服务器运行新版本软件,并在数据库中创建与新版本软件相对应的新版本数据表,实时接收对新版本数据表的操作。
[0032]在将数据库中的旧版本数据表生成第一数据库文件后将数据库清空,然后运行新版本软件。进而调用新版本软件在数据库中创建新版本数据表。需要说明的是,本实施例中将数据库清空,以提供创建新版本数据表空间仅是一种可行方案。在具体操作时并不局限于此,本领域技术人员可以根据实际需求设定相应的其它方式,如,将数据库中的旧版本数据表以及数据移存,以提供创建新版本数据表的空间;再如,使用创建的新版本数据表将数据库中的旧版本数据表直接覆盖等等。
[0033]此时一旦新版本数据表创建成功,新版本软件便可以对新版本数据表进行操作,实时将升级过程中设备的软件系统产生的数据写入到数据表中,例如:将升级过程中软件系统上报的一条告警信息写入新版本数据表中。
[0034]步骤S106:服务器生成与新版本数据表对应的第二数据库文件。
[0035]其中,第二数据库文件中包括:新版本数据表的表结构信息,第二数据库文件与第一数据库文件格式相同,如均为.sql文件。
[0036]步骤S108:服务器对第一数据库文件和第二数据库文件中存储的表结构信息进行比对,获得表结构差异信息。
[0037]例如:第一数据文件中存储有表名为A、B和C的三个旧数据表的表结构信息,第二数据库文件中储有表名为a、b和C的三个新数据表的表结构信息。那么在对两个数据库文件进行比对时,将旧表A与新表A的表结构信息进行比对,比对出新旧表A的表结构差异,同样的原理比对出新旧表B的表结构差异以及新旧表C的表结构差异,最终获得所有的数据表的表结构差异。
[0038]步骤SllO:服务器依据表结构差异信息和第一数据库文件中的旧版本数据表中的数据,生成新版本数据表中的数据。
[0039]由于数据表的表结构发生了变化,例如同样是数据表A,新旧数据表相比新数据表在旧数据表的基础上删除了一个字段,那么在生成新数据表A对应的数据时,就需要将删除的这一个字段对应的数据删除,其它修改如增加字段等也与此类似,从而生成所有新版本数据表对应的数据。
[0040]步骤S112:服务器将生成的新版本数据表中的数据导入新版本数据表。
[0041]需要说明的是,上述步骤S202至步骤S112均可以由本领域技术人员采用任意适当的实现方式实现,如,由服务器通过调用Linux Shell脚本来实现。但不限于此,其它语言脚本和实现方式也同样适用。
[0042]通过本实施例提供的设备跨版本升级方法,在生成新版本数据表中的数据的过程中,新版本软件便可以对新版本数据表进行操作,实时将升级过程中设备的软件系统产生的数据写入到数据表中。因此,通过本实施例提供的设备跨版本升级方法,能够有效避免现有的设备跨版本升级方法无法在新版本数据升级过程中对数据表进行控制,从而带来的数据升级期间生成的数据无法继承造成动态损耗的问题。同时,本实施例提供的设备跨版本升级方法在设备内部根据两个数据库文件生成新版本数据表中的数据,无需像现有技术中的升级方法需要人工将数据导入、导出,实现了设备内部的版本升级,避免了多余的版本升级处理流程。
[0043]实施例二
[0044]参照图2,示出了根据本发明实施例二的一种设备跨版本升级方法的步骤流程图。
[0045]本实施例的设备跨版本升级方法具体步骤包括:
[0046]步骤S202:服务器调用脚本程序生成与数据库中的旧版本数据表对应的第一数据库文件。
[0047]其中,旧版本数据表为对应于旧版本软件的数据表,第一数据库文件中包括:旧版本数据表的表结构信息,和旧版本数据表中的数据。
[0048]本实施例中的第一数据库文件为SQL文件,在本实施例中将该SQL文件记为第一SQL文件,本实施例中服务器通过调用Linux Shell脚本将数据库中存储的旧版本数据表生成第一 SQL文件。
[0049]将数据库中的旧版本数据表信息转换成第一 SQL文件时,可以将表结构信息与数据信息分开存储,即在第一 SQL文件中先存储数据库中各个数据表的表结构信息,待所有数据表的表结构信息全部存储完后,再存储各个数据表对应的数据信息,这样生成的第一SQL文件前半部分内容为数据表的表结构信息,后半部分内容为数据表的数据信息。采用这样的存储形式,更便于对数据表的表结构差异进行比对。
[0050]另外,将数据库中的旧版本数据表信息转换成第一 SQL文件时,还可以将表结构信息与数据信息交叉存储,即存储完A数据表的表结构信息后,紧接着存储A数据表的数据,待存储完A数据表的数据后再存储B数据表的表结构信息。采用这样的存储形式,能够更直观地获得各数据表对应的数据信息以及数据表的表结构。需要说明的是,除上述列举的存储形式外,本领域技术人员还可以根据实际需求设置第一 SQL文件中表结构信息与数据信息的存储形式,本申请对此不作具体限制。
[0051]本实施例中的第一 SQL文件中存储的旧版本数据表的表结构信息与数据信息分开存储。假设旧版本数据表为A、B和C,那么在第一 SQL文件中前半部分存储的为旧版本数据表A、B和C的表结构信息,在第一 SQL文件中后半部分存储的为旧版本数据表A、B和C的数据信息。
[0052]步骤S204:服务器调用脚本程序运行新版本软件,并在数据库中创建与新版本软件相对应的新版本数据表,实时接收对新版本数据表的操作。
[0053]服务器调用脚本程序运行新版本软件,此时新版本软件实时接收对新版本数据表的操作可以是:在数据库中生成新版本数据表后,新版本软件就可以对新版本数据表进行操作,例如:向新版本数据表中记录一条告警信息,而不必等待旧版本数据表的数据导入后再进行操作,从而避免了数据的动态损耗。
[0054]步骤S206:服务器调用脚本程序生成与新版本数据表对应的第二数据库文件。
[0055]其中,第二数据库文件中包括:新版本数据表的表结构信息,优选地,第二数据库文件还可以包括各数据表对应的默认数据。本实施例中第二数据库文件依然是一个SQL文件,记为第二 SQL文件,该第二 SQL文件中的数据表结构信息与数据表中的数据信息,也如步骤S202中生成的第一 SQL文件中存储的数据表结构信息与数据表中的数据信息一样分开存储。假设新版本数据表包括数据表A、B、C和D,那么生成的第二 SQL文件中前半部分存储有新版本数据表A、B、C和D的表结构信息,第二 SQL文件中后半部分存储有新版本数据表A、B、C和D对应的默认数据。
[0056]以新增字段为例,通过脚本程序调用新版本软件在数据库中创建与新版本软件相对应的新版本数据表时,既生成新版本数据表的表结构,又生成各数据表新增字段对应的默认数据。其中,默认数据可以为事例性的数据,例如:当数据表中有一字段为“地理位置”,那么该字段下对应有一个默认数据“北京”,当用户在填写该字段信息时通过该默认数据就可明了所需要填写的地理位置信息为城市名称。当然,也可以仅生成新版本数据表的表结构,而数据表新增字段置空。
[0057]步骤S208:服务器调用脚本程序逐行对第一数据库文件和第二数据库文件中存储的相对应的各个数据表的表结构信息进行比对,获得各个数据表的表结构差异。
[0058]本实施例中,服务器调用脚本程序在将旧版本数据表、新版本数据表均生成对应的第一 SQL文件以及第二 SQL文件后,将生成的两个SQL文件中的信息进行比对,以获得各个数据表的表结构差异。在比对时,将第一 SQL文件中存储的旧版本数据表A的表结构信息、与第二 SQL文件中存储的新版本数据表A的表结构信息进行比对。在比对时逐行的对该部分信息进行比对,在比对时,若发现新版本数据表A的表结构信息较旧版本数据表A的表结构信息多了一列,那么就将该多出的这一列对应的表结构信息作为数据表A的表结构差异。以同样的比对方式,获得各个数据表的表结构差异。
[0059]本实施例中,由于是对两个SQL文件中的信息逐行进行比对,因此能够直接在设备内部通过Shell脚本实现。相比现有的方案中,需要在设备外部比对新、旧数据表的表结构差异,待比对完差异后再生成新数据表对应的数据,然后将新数据表及数据导入数据库中,更节省人力,同时还避免了导入、导出数据的处理流程。
[0060]需要说明的是,上述所列举的仅是数据表中的某字段结构发生改变时的情况,当新版本数据表较旧版本数据表新增了数据表D时,由于旧版本数据表中并不存在数据表D,那么新增的数据表D的整个数据表结构信息就作为该数据表的表结构差异。例如:通过脚本程序启动的新版本软件生成了一个针对于新软件版本的属性信息表,如告警基础配置表,而该数据表在旧版本数据表中并不存在,此时就可以说增加了新的数据表。除了增加表的情况,还同样存在删除数据表的情况、或数据表中的字段信息发生改变的情况,无论上述哪种情况,均可以通过比对两个SQL文件比对出各个数据表的表结构差异。其中,删除数据表是指新版本数据表较旧版本数据表缺少了一个数据表A,此时,记录缺少数据表A,那么在生成新版本数据表信息时,则不会在第二 SQL文件中生成数据表A的数据。而字段信息发生变化的情况,等同于删除一个字段信息同时新增一个字段信息,字段信息发生变化例如:在数据表A中第一列对应的字段信息为“姓名”,而在新生成的数据表A中该列的字段信息为“年龄”,那么也就是说新生成的数据表A相比旧的数据表A发生了字段信息的变化,在处理时,可认为新生成的数据表A相对于旧数据表A删除了字段信息“姓名”而新增了字段信息“年龄”。
[0061]步骤S210:服务器调用脚本程序依据获得的各个数据表的表结构差异,结合第一数据库文件中、各个旧版本数据表中未发生变化的表结构部分对应的数据,和设定的、对应于各个数据表的发生表结构变化部分的默认数据,在第二数据库文件中生成新版本数据表中的数据。
[0062]例如:在步骤S208中已比对出新版本数据表B较旧版本数据表B新增了字段信息为“地理位置”的字段,其他的字段信息未改变。那么在生成新版本数据表B对应的数据时,只需将第一 SQL文件种存储的旧数据表B对应的数据信息复制到第二 SQL文件中的相应位置。这样在第二 SQL文件中,就生成了将未发生变化的表结构部分对应的数据,和设定的、对应于各个数据表的发生表结构变化部分的默认数据,如数据表B中新增的“地理位置”字段对应的默认数据,组合生成新版本数据表B对应的数据。采用同样的方式,在第二 SQL文件中生成其他新版本数据表对应的数据,组合后即生成新版本数据表中的数据。
[0063]步骤S212:服务器调用脚本程序使用第二数据库文件中的新版本数据表中的数据,向新版本数据表中导入数据。
[0064]优选地,本实施例中服务器在调用脚本程序使用第二数据库文件中的新版本数据表中的数据,向新版本数据表中导入数据时,逐条逐字段判断新版本数据表中待导入的字段下是否已经存储有数据;若已存储,则放弃该字段的导入;若未存储,则将该字段对应的数据导入新版本数据表中。
[0065]例如:第二 SQL文件中包含生成的新版本数据中数据表A中的一条SQL语句,该语句记载了数据表A中的第三条记录的数据信息。当将该语句中的数据信息导入数据库中的新版本数据表A时,要依次判断新版本数据表A中第三条记录中的各个字段下是否存储有数据,若前三个单元格中未存储数据,而第四个单元格中存储有数据,那么就将该条记录中的前三个数据对应导入前三个字段中,放弃该条记录中的第四个字段数据的导入。
[0066]需要说明的是,本实施例中在使用第二数据库文件中的新版本数据表中的数据,向新版本数据表中导入数据时采用的是一种优选的导入方式。在导入数据时并不局限于本实施例中的描述,还可以区分出跨版本升级时会发生表结构变化的数据表、以及不会发生表结构变化的数据表,仅是在导入发生表结构变化的数据表对应的数据时,才逐条逐字段的判断数据库中是否已经存储有该数据信息。当然,还有其他的设置方式,在此不再一一列举。
[0067]通过本实施例提供的设备跨版本升级方法,服务器调用脚本程序启动新版本软件,在生成新版本数据表中的数据的过程中,新版本软件便可以对新版本数据表进行操作,实时将升级过程中设备的软件系统产生的数据写入到数据表中。因此,通过本实施例提供的设备跨版本升级方法,能够有效避免现有的设备跨版本升级方法无法在新版本数据升级过程中对数据表进行控制,从而带来的数据升级期间生成的数据无法继承造成动态损耗的问题。同时,本实施例提供的设备跨版本升级方法在设备内部根据两个数据库文件生成新版本数据表中的数据,无需像现有技术中的升级方法需要人工将数据导入、导出,实现了设备内部的版本升级,避免了多余的版本升级处理流程。
[0068]实施例三
[0069]参照图3,示出了根据本发明实施例三的一种设备跨版本升级方法的步骤流程图。
[0070]本实施例中以基于嵌入式Mysql数据库的电信设备为例,对本发明的设备跨版本升级方法进行介绍。本实施例的升级方法在嵌入式的Linux操作系统中使用,在软件版本升级过程中,升级程序与Shell命令和Mysql数据库中的Sql命令相互配合协调工作,从而实现Mysql数据库递增式变化跨版本无障碍升级。
[0071]其中,跨版本主要指的是新旧版本的数据表结构有所变化,而旧版本数据在新版本数据表结构变化后得以实时继承。无障碍主要指的是所有数据升级处理流程在整体版本升级流程内部封装,对外不呈现因版本变化而带来多余的处理流程。数据库递增式变化指在数据库中增加数据表、删除数据表;数据表结构增加字段、删除字段和原有字段类型改变,其中字段类型的改变等价于删除旧类型字段,同时新增一个新类型字段。
[0072]本实施例中基于嵌入式Mysql数据库的电信设备在数据表结构发生变化时的无障碍跨版本升级的具体流程如下:
[0073]步骤S302:升级程序启动设备版本升级后,转存旧版本的数据表信息。
[0074]本实施例中的升级程序是运行在电信设备中的软件,存储于电信设备的服务器中。在进行设备版本升级前,首先要下载新的软件版本至电信设备的硬盘上,下载的新的软件版本包括:供升级程序调用的Shell脚本以及待升级的软件版本包。
[0075]该步骤中,升级程序调用Shell脚本将旧版本的数据表信息转存为SQL文件、保存在本地硬盘命名为OldDate.sql。该文件名为OldDate.sql的文件包括旧版本数据表的表结构信息和旧版本数据表中的数据信息。
[0076]步骤S304:升级程序升级新版本软件,在数据库中生成新版本数据表。
[0077]升级程序调用Shell脚本清空数据库中的数据表,并运行新版本软件,通过新版本软件生成新版本数据表的表结构和相关的默认数据。
[0078]在此步骤中,新版本数据表的表结构一旦生成,便即刻允许新软件版本对新建立的新版本表进行相关操作,无需等待数据升级完成。由于电信设备的软件系统比较庞大,任何模块随时都在产生数据,产生的每条数据都需要及时的记录在数据库,比如:上报一条告警信息就需要及记录在数据库中。而现有的设备升级方法中由于在数据升级完成前无法对数据库进行相关操作,因此电信设备的软件系统的各个模块在升级过程中产生的数据无法记录在数据库中,因此数据无法实时继承。
[0079]步骤S306:升级程序转存数据库中的新版本数据表信息。
[0080]升级程序调用Shell脚本转存新版本的数据库信息,将新版本的数据表信息转存为SQL文件、也保存在本地硬盘中,命名为NewDate.sql。该文件名为NewDate.sql的文件包括新版本的表结构信息和默认数据信息。
[0081]步骤S308:升级程序调用Shell脚本对NewDate.sql与Old Date, sql文件进行比较,获得数据表的表结构差异;根据表结构差异,基于旧版本数据表中的数据信息直接生成符合新版本数据表结构的数据。
[0082]本实施例中升级程序调用Shell脚本对本地硬盘中的OldDate.sql和NewData.sql进行比较,根据表结构差异,基于旧版本数据,修改NewData.sql文件生成新版本数据。其中,表结构差异包括:数据库中增加数据表、删除数据表;数据表结构增加字段、删除字段和原有字段类型改变。
[0083]本实施例中的SQL文件的格式为前半部分是数据表的表结构信息,后半部分是数据表对应的数据信息。Shell脚本支持查找、抽取列操作、抽取行操作等功能,因此在通过Shell脚本比对两个SQL文件中的数据表的结构差异很容易实现。找到差异后,在NewData.sql中继承OldDate.sql中没有发生变化部分表结构的数据信息,同时对发生变化的部分使用默认数据插入,生成符合新版本数据表结构的基础数据即新版本数据表中的数据。
[0084]本实施例提供的将新旧版本数据生成两个SQL文件,通过Shell脚本比对各个数据表的表结构差异,较现有的设备跨版本升级方法根据表结构差异组合生成新的表结构、然后再根据信息的表结构生成对应的数据的方法,减少了频繁的SQL表操作,升级效率更
高,更可靠。
[0085]步骤S310:升级程序调用Shell脚本把生成的基础数据导入数据库中的新版本的数据表中,并且在导入基础数据时以数据库中存储的数据信息为准。
[0086]升级程序调用Shell脚本使用Mysql命令把修改后的NewData.sql文件中的基础数据插入新版本的数据库中,为保护数据升级期间新版本动态生成的数据,在导入基础数据时数据信息以数据库中已存储的数据信息为准。导入基础数据时以数据库中已存储的数据信息为准是指:导入数据过程中,遇到已经存储在数据表中的字段下的数据信息,以数据库中已存储的字段下的数据信息为准,丢弃修改后的NewData.sql中相对应的数据信息。
[0087]至此电信设备的数据升级完成,本实施例中升级过程中所有的处理均由升级程序调用的Shell脚本来实现,所有的处理流程也可以集中在一个Shell脚本中实现。本实施例中,软件版本调用Linux Shell脚本控制数据升级过程,和软件版本相互独立,和软件代码开发相比,Linux Shell脚本开发周期更短,更便捷,更容易维护。
[0088]通过本实施例提供的设备跨版本升级方法,升级程序通过调用脚本实现升级前旧版本的数据库信息的导出、新版数据表的建立、新版本数据表信息的导出、表结构差异的比对、符合新版本数据表结构的数据的生成以及数据的导入这一系列的流程,可见本实施例中的升级过程完全自动化,无需之前的准备和人工干预;并且由于是在设备内容进行的升级,因此没有因版本变化而额外产生的升级操作。同时,本实施例中提供的设备版本升级方法在旧版本人工数据制作期间产生的动态数据、和新版本升级后数据表结构建立完成到数据升级完成期间的新版本动态数据都可以良好继承到新版本数据表中,因此升级过程中产生的数据可以良好的继承。综上,本实施例提供的基于嵌入式Mysql数据库的电信设备在数据表结构发生变化时无障碍跨版本升级的方法,解决了现有的升级技术中存在的工作量大、升级前版本动态数据不能继承、升级后动态数据损耗等问题。
[0089]实施例四
[0090]参照图4,示出了根据本发明实施例四的一种设备跨版本升级装置的结构框图。
[0091]本实施例的设备跨版本升级装置包括:第一文件生成模块402,用于生成与数据库中的旧版本数据表对应的第一数据库文件,其中,旧版本数据表为对应于旧版本软件的数据表,第一数据库文件中包括:旧版本数据表的表结构信息,和旧版本数据表中的数据;创建模块404,用于运行新版本软件,并在数据库中创建与新版本软件相对应的新版本数据表,实时接收对新版本数据表的操作;第二文件生成模块406,用于生成与新版本数据表对应的第二数据库文件,其中,第二数据库文件中包括:新版本数据表的表结构信息;比对模块408,用于对第一数据库文件和第二数据库文件中存储的表结构信息进行比对,获得表结构差异信息;数据生成模块410,用于依据表结构差异信息和第一数据库文件中的旧版本数据表中的数据,生成新版本数据表中的数据;数据导入模块412,用于将生成的新版本数据表中的数据导入所述新版本数据表。
[0092]优选地,比对模块408对第一数据库文件和第二数据库文件中存储的表结构信息进行比对,获得表结构差异信息时,逐行对第一数据库文件和第二数据库文件中存储的相对应的各个数据表的表结构信息进行比对,获得各个数据表的表结构差异。
[0093]优选地,数据生成模块410依据表结构差异信息和第一数据库文件中的旧版本数据表中的数据,生成新版本数据表中的数据时:依据获得的各个数据表的表结构差异,结合第一数据库文件中、各个旧版本数据表中未发生变化的表结构部分对应的数据,和设定的、对应于各个数据表的发生表结构变化部分的默认数据,在第二数据库文件中生成新版本数据表中的数据。
[0094]优选地,数据导入模块412将生成的新版本数据表中的数据导入新版本数据表时:在使用第二数据库文件中的新版本数据表中的数据,向新版本数据表中导入数据时,逐条逐字段判断新版本数据表中待导入的字段下是否已经存储有数据;若已存储,则放弃该字段的导入;若未存储,则将该字段对应的数据导入所述新版本数据表中。
[0095]优选地,第一数据库文件和第二数据库文件均为SQL文件;第一数据库文件与第二数据库文件中的表结构信息与数据信息分开存储。
[0096]本实施例的设备跨版本升级装置用于实现前述多个方法实施例中相应的设备跨版本升级方法,并且具有相应的方法实施的有益效果,在此不再赘述。
[0097]本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0098]以上对本发明所提供的设备跨版本升级方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【权利要求】
1.一种设备跨版本升级方法,其特征在于,包括: 生成与数据库中的旧版本数据表对应的第一数据库文件,其中,所述旧版本数据表为对应于旧版本软件的数据表,所述第一数据库文件中包括:所述旧版本数据表的表结构信息,和所述旧版本数据表中的数据; 运行新版本软件,并在所述数据库中创建与所述新版本软件相对应的新版本数据表,实时接收对所述新版本数据表的操作; 生成与所述新版本数据表对应的第二数据库文件,其中,所述第二数据库文件中包括:所述新版本数据表的表结构信息; 对所述第一数据库文件和所述第二数据库文件中存储的表结构信息进行比对,获得表结构差异信息; 依据所述表结构差异信息和所述第一数据库文件中的所述旧版本数据表中的数据,生成所述新版本数据表中的数据; 将生成的所述新版本数据表中的数据导入所述新版本数据表。
2.根据权利要求1所述的方法,其特征在于,所述对所述第一数据库文件和所述第二数据库文件中存储的表结构信息进行比对,获得表结构差异信息步骤包括: 逐行对所述第一数据库文件和所述第二数据库文件中存储的相对应的各个数据表的表结构信息进行比对,获得各个数据表的表结构差异。
3.根据权利要求2所述的方法,其特征在于,所述依据所述表结构差异信息和所述第一数据库文件中的所述旧版本数据表中的数据,生成所述新版本数据表中的数据步骤包括: 依据获得的所述各个数据表的表结构差异,结合所述第一数据库文件中、各个旧版本数据表中未发生变化的表结构部分对应的数据,和设定的、对应于所述各个数据表的发生表结构变化部分的默认数据,在所述第二数据库文件中生成所述新版本数据表中的数据。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述将生成的所述新版本数据表中的数据导入所述新版本数据表步骤包括: 在使用所述第二数据库文件中的所述新版本数据表中的数据,向所述新版本数据表中导入数据时,逐条逐字段判断所述新版本数据表中待导入的字段下是否已经存储有数据;若已存储,则放弃该字段的导入;若未存储,则将该字段对应的数据导入所述新版本数据表中。
5.根据权利要求1所述的方法,其特征在于,所述第一数据库文件和所述第二数据库文件均为SQL文件;所述第一数据库文件与所述第二数据库文件中的表结构信息与数据信息分开存储。
6.一种设备跨版本升级装置,其特征在于,包括: 第一文件生成模块,用于生成与数据库中的旧版本数据表对应的第一数据库文件,其中,所述旧版本数据表为对应于旧版本软件的数据表,所述第一数据库文件中包括:所述旧版本数据表的表结构信息,和所述旧版本数据表中的数据; 创建模块,用于运行新版本软件,并在所述数据库中创建与所述新版本软件相对应的新版本数据表,实时接收对所述新版本数据表的操作; 第二文件生成模块,用于生成与所述新版本数据表对应的第二数据库文件,其中,所述第二数据库文件中包括:所述新版本数据表的表结构信息; 比对模块,用于对所述第一数据库文件和所述第二数据库文件中存储的表结构信息进行比对,获得表结构差异信息; 数据生成模块,用于依据所述表结构差异信息和所述第一数据库文件中的所述旧版本数据表中的数据,生成所述新版本数据表中的数据; 数据导入模块,用于将生成的所述新版本数据表中的数据导入所述新版本数据表。
7.根据权利要求6所述的装置,其特征在于,所述比对模块对所述第一数据库文件和所述第二数据库文件中存储的表结构信息进行比对,获得表结构差异信息时,逐行对所述第一数据库文件和所述第二数据库文件中存储的相对应的各个数据表的表结构信息进行比对,获得各个数据 表的表结构差异。
8.根据权利要求7所述的装置,其特征在于,所述数据生成模块依据所述表结构差异信息和所述第一数据库文件中的所述旧版本数据表中的数据,生成所述新版本数据表中的数据时: 依据获得的所述各个数据表的表结构差异,结合所述第一数据库文件中、各个旧版本数据表中未发生变化的表结构部分对应的数据,和设定的、对应于所述各个数据表的发生表结构变化部分的默认数据,在所述第二数据库文件中生成所述新版本数据表中的数据。
9.根据权利要求6至8任一项所述的装置,其特征在于,所述数据导入模块将生成的所述新版本数据表中的数据导入所述新版本数据表时: 在使用所述第二数据库文件中的所述新版本数据表中的数据,向所述新版本数据表中导入数据时,逐条逐字段判断所述新版本数据表中待导入的字段下是否已经存储有数据;若已存储,则放弃该字段的导入;若未存储,则将该字段对应的数据导入所述新版本数据表中。
10.根据权利要求6所述的装置,其特征在于,所述第一数据库文件和所述第二数据库文件均为SQL文件;所述第一数据库文件与所述第二数据库文件中的表结构信息与数据信息分开存储。
【文档编号】G06F17/30GK103995854SQ201410201310
【公开日】2014年8月20日 申请日期:2014年5月13日 优先权日:2014年5月13日
【发明者】肖浩, 杨明成 申请人:大唐移动通信设备有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1