CN103810257B - 一种升级软件数据库的方法、装置及设备 - Google Patents

一种升级软件数据库的方法、装置及设备 Download PDF

Info

Publication number
CN103810257B
CN103810257B CN201410035800.7A CN201410035800A CN103810257B CN 103810257 B CN103810257 B CN 103810257B CN 201410035800 A CN201410035800 A CN 201410035800A CN 103810257 B CN103810257 B CN 103810257B
Authority
CN
China
Prior art keywords
database
database table
version software
row
structural information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410035800.7A
Other languages
English (en)
Other versions
CN103810257A (zh
Inventor
王宏新
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201410035800.7A priority Critical patent/CN103810257B/zh
Publication of CN103810257A publication Critical patent/CN103810257A/zh
Application granted granted Critical
Publication of CN103810257B publication Critical patent/CN103810257B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Abstract

本发明公开了一种升级软件数据库的方法、装置及设备,属于计算机领域。所述方法包括:获取旧版本软件的数据库包括的数据库表的表结构信息;获取新版本软件的数据库包括的数据库表的表结构信息;根据旧版本软件的数据库包括的数据库表的表结构信息和新版本软件的数据库包括的数据库表的表结构信息,获取旧版本软件与新版本软件之间的差异信息;根据差异信息升级旧版本软件的数据库。所述装置包括:第一获取模块,第二获取模块,第三获取模块和升级模块。本发明无需开发人员对软件的每个历史版本的数据库均编写对应最新版本软件的数据库的升级脚本,减少了技术人员的工作量,降低了人工成本,提高了升级软件数据库的智能性。

Description

一种升级软件数据库的方法、装置及设备
技术领域
本发明涉及计算机领域,特别涉及一种升级软件数据库的方法、装置及设备。
背景技术
当前,软件已经成为人们工作和生活中不可获缺的一部分,但同时有相当一部分软件或多或少存在缺陷,因此为了优化软件,需要对软件的软件数据库进行升级。
目前,现有技术提供了一种升级软件数据库的方法,在升级之前,开发人员事先需要分别编写每个历史版本软件的数据库对应最新版本软件的数据库的升级脚本,例如,该软件包括3个历史版本,分别为版本1、版本2和版本3,最新版本为版本4,则开发人员需要编写版本1的数据库对应版本4的数据库的升级脚本、版本2的数据库对应版本4的数据库的升级脚本和版本3的数据库对应版本4的数据库的升级脚本。当对当前版本软件的数据库进行升级时,确定当前软件的数据库版本,获取当前版本数据库对应最新版本数据库的升级脚本,根据获取的升级脚本对当前版本软件的数据库进行升级。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
对于软件的每个历史版本,开发人员均要编写该版本软件的数据库对应最新版本软件的数据库的升级脚本,导致开发人员的工作量大,智能化很低,提高了软件升级的人工成本。
发明内容
为了降低软件升级的人工成本,本发明提供了一种升级软件数据库的方法、装置及设备。所述技术方案如下:
第一方面,一种升级软件数据库的方法,所述方法包括:
获取旧版本软件的数据库包括的数据库表的表结构信息;
获取新版本软件的数据库包括的数据库表的表结构信息;
根据所述旧版本软件的数据库包括的数据库表的表结构信息和所述新版本软件的数据库包括的数据库表的表结构信息,获取所述旧版本软件与所述新版本软件之间的差异信息;
根据所述差异信息升级所述旧版本软件的数据库。
结合第一方面,在第一方面的第一种可能的实现方式中,所述获取旧版本软件的数据库包括的数据库表的表结构信息,包括:
获取所述旧版本软件的数据库包括的数据库表;
解析所述数据库表,得到所述数据库表的表名、所述数据库表包括的各列的列名和数据类型并作为所述旧版本软件的数据库包括的数据库表的表结构信息。
结合第一方面,在第一方面的第二种可能的实现方式中,所述获取新版本软件的数据库包括的数据库表的表结构信息,包括:
从所述新版本软件的软件包中获取所述新版本软件的全局静态数据;
从所述全局静态数据中获取所述新版本软件的数据库包括的数据库表的表结构信息。
结合第一方面,在第一方面的第三种可能的实现方式中,所述根据所述旧版本软件的数据库包括的数据库表的表结构信息和所述新版本软件的数据库包括的数据库表的表结构信息,获取所述旧版本软件与所述新版本软件之间的差异信息,包括:
比较所述旧版本软件的数据库包括的数据库表的表结构信息和所述新版本软件的数据库包括的数据库表的表结构信息,得到第一数据库表、第二数据库表、第三数据库表和第四数据库表;
其中,所述第一数据库表为所述旧版本软件包括但所述新版本软件不包括的数据库表,所述第二数据库表为所述新版本软件包括但所述旧版本软件不包括的数据库表,所述第三数据库表为所述旧版本软件中的数据库表,所述第四数据库表为所述新版本软件中的数据库表,所述第三数据库表的表名与所述第四数据库表的表名相同且所述第三数据库表的表结构信息与所述第四数据库表的表结构信息不同;
将所述第一数据库表、所述第二数据库表、所述第三数据库表和所述第四数据库确定为所述旧版本软件与所述新版本软件之间的差异信息。
结合第一方面,在第一方面的第四种可能的实现方式中,所述根据所述差异信息升级所述旧版本软件的数据库,包括:
在所述旧版本数据库中删除所述第一数据库表;
根据所述第二数据库表的表结构信息,在所述旧版本软件的数据库中建立所述第二数据库表;
根据所述第四数据库表的表结构信息,修改所述第三数据库表。
结合第一方面,在第一方面的第五种可能的实现方式中,所述根据所述第四数据库表的表结构信息,修改所述第三数据库表,包括:
根据所述第四数据库表的表结构信息,建立与所述第四数据库的表结构相同的新数据库表;
将所述第三数据库表中包括的数据存储在所述新数据库表中;
在所述旧版本软件中将所述第三数据库表更新为所述新数据库表。
结合第一方面,在第一方面的第六种可能的实现方式中,所述根据所述第四数据库表的表结构信息,修改所述第三数据库表,包括:
根据所述第三数据库表的表结构信息和所述第四数据库表的表结构信息,获取第一列、第二列、第三列和第四列;
其中,所述第一列为所述第三数据库表包括但所述第四数据库表不包括的列,所述第二列为所述第四数据库表包括但所述第三数据库表不包括的列,所述第三列为所述第三数据库表中的列,所述第四列为所述第四数据库表中的列,所述第三列的列名与所述第四列的列名相同且所述第三列的数据类型与所述第四列的数据类型不同;
在所述第三数据库表中删除所述第一列,添加所述第二列,并将所述第三列的数据类型设置为所述第四列的数据类型。
第二方面,一种升级软件数据库的装置,所述装置包括:
第一获取模块,用于获取旧版本软件的数据库包括的数据库表的表结构信息;
第二获取模块,用于获取新版本软件的数据库包括的数据库表的表结构信息;
第三获取模块,用于根据所述旧版本软件的数据库包括的数据库表的表结构信息和所述新版本软件的数据库包括的数据库表的表结构信息,获取所述旧版本软件与所述新版本软件之间的差异信息;
升级模块,用于根据所述差异信息升级所述旧版本软件的数据库。
结合第二方面,在第二方面的第一种可能的实现方式中,所述第一获取模块包括:
第一获取单元,用于获取所述旧版本软件的数据库包括的数据库表;
解析单元,用于解析所述数据库表,得到所述数据库表的表名、所述数据库表包括的各列的列名和数据类型并作为所述旧版本软件的数据库包括的数据库表的表结构信息。
结合第二方面,在第二方面的第二种可能的实现方式中,所述第二获取模块包括:
第二获取单元,用于从所述新版本软件的软件包中获取所述新版本软件的全局静态数据;
第三获取单元,用于从所述全局静态数据中获取所述新版本软件的数据库包括的数据库表的表结构信息。
结合第二方面,在第二方面的第三种可能的实现方式中,所述第三获取模块包括:
比较单元,用于比较所述旧版本软件的数据库包括的数据库表的表结构信息和所述新版本软件的数据库包括的数据库表的表结构信息,得到第一数据库表、第二数据库表、第三数据库表和第四数据库表;
其中,所述第一数据库表为所述旧版本软件包括但所述新版本软件不包括的数据库表,所述第二数据库表为所述新版本软件包括但所述旧版本软件不包括的数据库表,所述第三数据库表为所述旧版本软件中的数据库表,所述第四数据库表为所述新版本软件中的数据库表,所述第三数据库表的表名与所述第四数据库表的表名相同且所述第三数据库表的表结构信息与所述第四数据库表的表结构信息不同;
确定单元,用于将所述第一数据库表、所述第二数据库表、所述第三数据库表和所述第四数据库确定为所述旧版本软件与所述新版本软件之间的差异信息。
结合第二方面,在第二方面的第四种可能的实现方式中,所述升级模块包括:
删除单元,用于在所述旧版本数据库中删除所述第一数据库表;
建立单元,用于根据所述第二数据库表的表结构信息,在所述旧版本软件的数据库中建立所述第二数据库表;
修改单元,用于根据所述第四数据库表的表结构信息,修改所述第三数据库表。
结合第二方面,在第二方面的第五种可能的实现方式中,所述修改单元包括:
建立子单元,用于根据所述第四数据库表的表结构信息,建立与所述第四数据库的表结构相同的新数据库表;
存储子单元,用于将所述第三数据库表中包括的数据存储在所述新数据库表中;
更新子单元,用于在所述旧版本软件中将所述第三数据库表更新为所述新数据库表。
结合第二方面,在第二方面的第六种可能的实现方式中,所述修改单元包括:
获取子单元,用于根据所述第三数据库表的表结构信息和所述第四数据库表的表结构信息,获取第一列、第二列、第三列和第四列;
其中,所述第一列为所述第三数据库表包括但所述第四数据库表不包括的列,所述第二列为所述第四数据库表包括但所述第三数据库表不包括的列,所述第三列为所述第三数据库表中的列,所述第四列为所述第四数据库表中的列,所述第三列的列名与所述第四列的列名相同且所述第三列的数据类型与所述第四列的数据类型不同;
删除子单元,用于在所述第三数据库表中删除所述第一列,添加所述第二列,并将所述第三列的数据类型设置为所述第四列的数据类型。
第三方面,一种设备,所述设备包括:
存储器和处理器,用于执行所述一种升级软件数据库的方法。
在本发明实施例中,获取旧版本软件的数据库包括的数据库表的表结构信息,获取新版本软件的数据库包括的数据库表的表结构信息,获取旧版本软件与新版本软件之间的差异信息,根据差异信息自动升级旧版本软件的数据库,无需开发人员对软件的每个历史版本的数据库均编写对应最新版本软件的数据库的升级脚本;减少了技术人员的工作量,降低了人工成本,提高了升级软件数据库的智能性。
附图说明
图1是本发明实施例1提供的一种升级软件数据库的方法流程图;
图2-1是本发明实施例2提供的一种升级软件数据库的方法流程图;
图2-2是本发明实施例2提供的一种获取数据库表的方法流程图;
图3是本发明实施例3提供的一种升级软件数据库的装置结构示意图;
图4是本发明实施例4提供的一种设备结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
参见图1,本发明提供了一种升级软件数据库的方法,包括:
步骤101:获取旧版本软件的数据库包括的数据库表的表结构信息;
步骤102:获取新版本软件的数据库包括的数据库表的表结构信息;
步骤103:根据旧版本软件的数据库包括的数据库表的表结构信息和新版本软件的数据库包括的数据库表的表结构信息,获取旧版本软件与新版本软件之间的差异信息;
步骤104:根据差异信息升级旧版本软件的数据库。
在本发明实施例中,获取旧版本软件的数据库包括的数据库表的表结构信息,获取新版本软件的数据库包括的数据库表的表结构信息,获取旧版本软件与新版本软件之间的差异信息,根据差异信息自动升级旧版本软件的数据库,无需开发人员对软件的每个历史版本的数据库均编写对应最新版本软件的数据库的升级脚本;减少了技术人员的工作量,降低了人工成本,提高了升级软件数据库的智能性。
实施例2
本发明实施例提供了一种升级软件数据库的方法,如果需要将某一旧版本软件升级至新版本软件,终端首先需要将旧版本软件的程序升级至新版本软件的程序;当程序升级完成后,再将旧版本软件的数据库升级至新版本软件的数据库;参见图2-1,该方法流程包括:
步骤201:获取新版本软件的软件包,如果终端本地存在新版本软件对应的旧版本软件,则执行步骤202;
具体地,下载新版本软件的软件包,从新版本软件的软件包中获取软件标识和版本号,根据该软件标识,查找终端的注册表,该注册表包括终端上安装的软件的软件标识与存储路径的对应关系,如果查找出对应的存储路径,则根据查找的存储路径,从终端本地获取该软件标识对应的软件,获取该软件的版本号,如果该软件的版本号小于新版本的软件的版本号,则确定终端本地存在新版本软件对应的旧版本软件,且该软件即为新版本软件对应的旧版本软件。
其中,如果没有从注册表中查找出对应的存储路径,则确定终端本地不存在该软件标识对应的软件,则可以根据新版本软件的软件包,在终端上直接安装新版本软件。
其中,如果该软件的版本号大于或等于新版本的软件的版本号,则确定终端本地存在新版本软件对应的旧版本软件,且不需要对该软件进行升级。
步骤202:从旧版本软件的数据库中获取旧版本软件的数据库表的表结构信息;
具体地,获取旧版本软件的数据库包括的每个数据库表,分别解析每个数据库表,得到每个数据库表的表名、每个数据库表包括的各列的列名和数据类型,将每个数据库表的表名、每个数据库表包括的各列的列名和数据类型分别组成每个数据库表的表结构信息。
例如,获取旧版本软件的数据库包括的一个数据库表,解析获取的数据库表,得到该数据库表的表名为“班级”,该数据库表包括的第一列的列名为“班级编号”以及数据类型为“char(4)”,第二列的列名为“班级名称”以及数据类型为“varchar(50)”;将获取的表名“班级”、第一列的列名“班级编号”以及数据类型“char(4)”和第二列的列名“班级名称”以及数据类型“varchar(50)”组成旧版本软件的一个数据库表的表结构信息。
步骤203:获取新版本软件的数据库表的表结构信息;
其中,技术人员利用计算机语言编写新版本软件的程序时,将新版本软件所需使用的数据库表的表结构信息作为全局静态数据编写在新版本软件的程序的主函数之前。
具体地,本步骤可以为:从新版本软件的软件包中获取新版本软件的程序,从该程序中获取全局静态数据,从全局静态数据获取新版本软件的数据库包括的数据库表的表结构信息。
例如,假设新版本软件的程序中的全局静态数据为table_学校(学校编号char(4),学校名称varchar(50)),从该全局静态数据中获取数据库表的表名为“班级”,数据库表包括的第一列的列名为“学校编号”以及数据类型为“char(4)”,第二列的列名为“学校名称”以及数据类型为“varchar(50)”;将获取的表名“学校”、第一列的列名“学校编号”以及数据类型“char(4)”和第二列的列名“学校名称”以及数据类型“varchar(50)”组成新版本软件的数据库包括的数据库表的表结构信息。
步骤204:比较旧版本软件的数据库包括的数据库表的表结构信息和新版本软件的数据库包括的数据库表的表结构信息,得到第一数据库表、第二数据库表、第三数据库表和第四数据库表;
其中,第一数据库表为旧版本软件包括但新版本软件不包括的数据库表,第二数据库表为新版本软件包括但旧版本软件不包括的数据库表,第三数据库表为旧版本软件中的数据库表,第四数据库表为新版本软件中的数据库表,第三数据库表的表名与第四数据库表的表名相同且第三数据库表的表结构信息与第四数据库表的表结构信息不同。
第一数据库表、第二数据库表、第三数据库表和第四数据库表均可为一个或多个数据库表,第三数据库表的个数与第四数据库表的个数相同。
具体地,参见图2-2,本步骤可以通过如下2041至2047的流程实现,包括:
2041:在旧版本软件的数据库中获取一个数据库表;
2042:根据获取的数据库表的表名,查找新版本软件的数据库;
2043:如果没有查找出对应的数据库表,则将获取的数据库表确定为第一数据库表;
2044:如果查找到对应的数据库表,则标记查找的数据库表,确定获取的数据库表的表结构信息和查找的数据库表的表结构信息是否相同,如果不同,则执行2045;
具体地,如果查找到对应的数据库表,则标记查找的数据库表,分别比较获取的数据库表包括的各列的列名以及数据类型和查找的数据库表包括的各列的列名以及数据类型,如果不完全一致,确定获取的数据库表的表结构信息和查找的数据库表的表结构信息不同,执行2045。
2045:将获取的数据库表确定为第三数据库表,以及将查找的数据库表确定为第四数据库表;
2046:如果旧版本软件的数据表中还包括未获取的数据库表,则从旧版本软件的数据库中获取下一数据库表,返回步骤2042;如果旧版本软件的数据表中不包括未获取的数据库表,则执行2047;
2047:将新版本软件的数据库包括的未标记的数据库表确定为第二数据库表。
步骤205:根据第一数据库表的表名,在旧版本数据库中删除第一数据库表;
例如,假设第一数据库表的表名为“学校”,则在旧版本数据库中获取表名为“学校”数据库表,然后删除该数据库表。
步骤206:根据第二数据库表的表结构信息,在旧版本软件的数据库中建立第二数据库表;
例如,假设第二数据库表的表名为“课程”、该数据库表包括两列,分别为第一列和第二列,第一列的列名为“课程名称”以及数据类型为“char(4)”,第二列的列名为“开课日期”以及数据类型为“varchar(50)”;然后根据该数据库表的表名、各列的列名和数据类型在旧版本数据库中建立如下表所示的第二数据库表。
课程
课程名称(char(4)) 开课日期(varchar(50))
NULL NULL
NULL NULL
步骤207:根据第四数据库表的表结构信息,更新第三数据库表。
具体地,可以按照如下第一种方式或第二种方式实现。
第一种方式具体可以通过如下(A-1)至(A-4)的流程实现,包括:
(A-1):根据第四数据库表的表结构信息,建立新数据库表;
(A-2):比较第三数据库表的表结构信息和第四数据库表的表结构信息,获取第三列、第四列、第五列和第六列;
其中,第三列为第三数据库表包括的列,第四列为第四数据库表包括的列,第三列的列名与第四列的列名相同且第三列的数据类型与第四列的数据类型不同;第五列为第三数据库表包括的列,第六列为第四数据库表包括的列,第五列的列名与第六列的列名相同且第五列的数据类型与第六列的数据类型相同。
第三列、第四列、第五列以及第六列均可以为一个或多个列,第三列的个数与第四列的个数相同,第五列的个数与第六列的个数相同。
具体地,本步骤可以为:从第三数据库表中获取一列;根据获取的列的列名,在第四数据库表中查找列;比较获取的列的数据类型和查找的列的数据类型;如果获取的列的数据类型与查找的列的数据类型不同,则将获取的列确定为第三列,以及将查找的列确定为第四列;如果获取的列的数据类型与查找的列的数据类型相同,则将获取的列确定为第五列,以及将查找的列确定为第六列;如果第三数据库表中还包括未获取的列,则从第三数据库表中获取下一列,对获取的每一列都执行上述操作,直至获取到最后的一列为止。
如果还存在未获取的第三数据库表,则继续获取下一第三数据库表,执行上述操作,直至获取到最后一个第三数据库表为止,在此就不再详述。
例如,假设第三数据库表的表名为“学生”,其包括两列,其中一列的列名为“学生编号”以及数据类型为“char(4)”,另一列的列名为“学生姓名”以及数据类型为“varchar(50)”;查找表名为“学生”的第四数据库表包括两列,其中一列的列名为“学生姓名”以及数据类型为“varchar(50)”,另一列的列名为“学生编号”以及数据类型为“int”;将第三数据库表中的列名为“学生编号”的列确定为第三列,将第四数据库表中的列名为“学生编号”列确定为第四列;将第三数据库表中的列名为“学生姓名”的列确定为第五列,将第四数据库表中的列名为“学生姓名”的列确定为第六列。
(A-3):获取第六列的数据,将第六列的数据存储在第五列中;将第四列的数据转换为第三列的数据类型支持的数据,将转换后的数据存储在第三列中;
(A-4):将旧版本软件中的第三数据库表更新为新数据库表。
第二种方式具体可以通过如下(B-1)和(B-2)两步骤实现,包括:
(B-1):比较第三数据库表的表结构信息和第四数据库表的表结构信息,获取第一列、第二列、第三列和第四列;
其中,第一列为第三数据库表包括但第四数据库表不包括的列,第二列为第四数据库表包括但第三数据库表不包括的列,第三列为第三数据库表包括的列,第四列为第四数据库表包括的列,第三列的列名与第四列的列名相同且第三列的数据类型与第四列的数据类型不同。
第一列、第二列、第三列以及第四列均可以为一个或多个列,第三列的个数与第四列的个数相同。
具体地,本步骤可以为:从第三数据库表中获取一列;根据获取的列的列名,在第四数据库表中的查找列,标记查找的列并将获取的列确定为第一列;比较获取的列的数据类型和查找的列的数据类型,如果获取的列的数据类型与查找的列的数据类型不同,则将获取的列确定为第三列,以及将查找的列确定为第四列;如果第三数据库表中还包括未获取的列,则从第三数据库表中获取下一列,对获取的每一列都执行上述操作,直至获取到最后的一列为止;然后将第四数据库表包括的未标记的列确定为第二列。
如果还存在未获取的第三数据库表,则继续获取下一第三数据库表,执行上述操作,直至获取到最后一个第三数据库表为止,在此就不再详述。
(B-2):在第三数据库表中删除第一列,添加第二列,并将第三列的数据类型设置为第四列的数据类型。
根据第三数据库表的表名和第一列的列名,在第三数据库表中删除第一列;根据第三数据库表的表名、第二列的列名和数据类型,在第三数据库表中添加第二列;根据第三数据库表的表名、第四列的列名和数据类型,在第三数据库表中将第三列的数据类型设置为第四列的数据类型。
在本发明实施例中,通过全局静态数据获取新版本软件的数据库包括的数据库表的表结构信息,以及在旧版本软件的数据库直接读取其包括的数据库表的表结构信息,获取二者之间的差异信息,根据差异信息自动升级旧版本软件的数据库,无需开发人员对软件的每个历史版本的数据库均编写对应最新版本软件的数据库的升级脚本;减少了技术人员的工作量,降低了人工成本,提高了升级软件数据库的智能性。
实施例3
参见图3,本发明实施例提供了一种升级软件数据库的装置,包括:
第一获取模块301,用于获取旧版本软件的数据库包括的数据库表的表结构信息;
第二获取模块302,用于获取新版本软件的数据库包括的数据库表的表结构信息;
第三获取模块303,用于根据旧版本软件的数据库包括的数据库表的表结构信息和新版本软件的数据库包括的数据库表的表结构信息,获取旧版本软件与新版本软件之间的差异信息;
升级模块304,用于根据差异信息升级旧版本软件的数据库。
优选地,第一获取模块301包括:
第一获取单元,用于获取旧版本软件的数据库包括的数据库表;
解析单元,用于解析数据库表,得到数据库表的表名、数据库表包括的各列的列名和数据类型并作为旧版本软件的数据库包括的数据库表的表结构信息。
优选地,第二获取模块302包括:
第二获取单元,用于从新版本软件的软件包中获取新版本软件的全局静态数据;
第三获取单元,用于从全局静态数据中获取新版本软件的数据库包括的数据库表的表结构信息。
优选地,第三获取模块303包括:
比较单元,用于比较旧版本软件的数据库包括的数据库表的表结构信息和新版本软件的数据库包括的数据库表的表结构信息,得到第一数据库表、第二数据库表、第三数据库表和第四数据库表;
其中,第一数据库表为旧版本软件包括但新版本软件不包括的数据库表,第二数据库表为新版本软件包括但旧版本软件不包括的数据库表,第三数据库表为旧版本软件中的数据库表,第四数据库表为新版本软件中的数据库表,第三数据库表的表名与第四数据库表的表名相同且第三数据库表的表结构信息与第四数据库表的表结构信息不同;
确定单元,用于将第一数据库表、第二数据库表、第三数据库表和第四数据库确定为旧版本软件与新版本软件之间的差异信息。
优选地,升级模块304包括:
删除单元,用于在旧版本数据库中删除第一数据库表;
建立单元,用于根据第二数据库表的表结构信息,在旧版本软件的数据库中建立第二数据库表;
修改单元,用于根据第四数据库表的表结构信息,修改第三数据库表。
优选地,修改单元包括:
建立子单元,用于根据第四数据库表的表结构信息,建立与第四数据库的表结构相同的新数据库表;
存储子单元,用于将第三数据库表中包括的数据存储在新数据库表中;
更新子单元,用于在旧版本软件中将第三数据库表更新为新数据库表。
优选地,修改单元包括:
获取子单元,用于根据第三数据库表的表结构信息和第四数据库表的表结构信息,获取第一列、第二列、第三列和第四列;
其中,第一列为第三数据库表包括但第四数据库表不包括的列,第二列为第四数据库表包括但第三数据库表不包括的列,第三列为第三数据库表中的列,第四列为第四数据库表中的列,第三列的列名与第四列的列名相同且第三列的数据类型与第四列的数据类型不同;
删除子单元,用于在第三数据库表中删除第一列,添加第二列,并将第三列的数据类型设置为第四列的数据类型。
在本发明实施例中,获取旧版本软件的数据库包括的数据库表的表结构信息,获取新版本软件的数据库包括的数据库表的表结构信息,获取旧版本软件与新版本软件之间的差异信息,根据差异信息自动升级旧版本软件的数据库,无需开发人员对软件的每个历史版本的数据库均编写对应最新版本软件的数据库的升级脚本;减少了技术人员的工作量,降低了人工成本,提高了升级软件数据库的智能性。
实施例4
参见图4,本发明实施例提供了一种设备,该设备包括存储器401和处理器402,用于执行如下一种升级软件数据库的方法:
获取旧版本软件的数据库包括的数据库表的表结构信息;
获取新版本软件的数据库包括的数据库表的表结构信息;
根据所述旧版本软件的数据库包括的数据库表的表结构信息和所述新版本软件的数据库包括的数据库表的表结构信息,获取所述旧版本软件与所述新版本软件之间的差异信息;
根据所述差异信息升级所述旧版本软件的数据库。
优选地,所述获取旧版本软件的数据库包括的数据库表的表结构信息,包括:
获取所述旧版本软件的数据库包括的数据库表;
解析所述数据库表,得到所述数据库表的表名、所述数据库表包括的各列的列名和数据类型并作为所述旧版本软件的数据库包括的数据库表的表结构信息。
优选地,所述获取新版本软件的数据库包括的数据库表的表结构信息,包括:
从所述新版本软件的软件包中获取所述新版本软件的全局静态数据;
从所述全局静态数据中获取所述新版本软件的数据库包括的数据库表的表结构信息。
优选地,所述根据所述旧版本软件的数据库包括的数据库表的表结构信息和所述新版本软件的数据库包括的数据库表的表结构信息,获取所述旧版本软件与所述新版本软件之间的差异信息,包括:
比较所述旧版本软件的数据库包括的数据库表的表结构信息和所述新版本软件的数据库包括的数据库表的表结构信息,得到第一数据库表、第二数据库表、第三数据库表和第四数据库表;
其中,所述第一数据库表为所述旧版本软件包括但所述新版本软件不包括的数据库表,所述第二数据库表为所述新版本软件包括但所述旧版本软件不包括的数据库表,所述第三数据库表为所述旧版本软件中的数据库表,所述第四数据库表为所述新版本软件中的数据库表,所述第三数据库表的表名与所述第四数据库表的表名相同且所述第三数据库表的表结构信息与所述第四数据库表的表结构信息不同;
将所述第一数据库表、所述第二数据库表、所述第三数据库表和所述第四数据库确定为所述旧版本软件与所述新版本软件之间的差异信息。
优选地,所述根据所述差异信息升级所述旧版本软件的数据库,包括:
在所述旧版本数据库中删除所述第一数据库表;
根据所述第二数据库表的表结构信息,在所述旧版本软件的数据库中建立所述第二数据库表;
根据所述第四数据库表的表结构信息,修改所述第三数据库表。
优选地,所述根据所述第四数据库表的表结构信息,修改所述第三数据库表,包括:
根据所述第四数据库表的表结构信息,建立与所述第四数据库的表结构相同的新数据库表;
将所述第三数据库表中包括的数据存储在所述新数据库表中;
在所述旧版本软件中将所述第三数据库表更新为所述新数据库表。
优选地,所述根据所述第四数据库表的表结构信息,修改所述第三数据库表,包括:
根据所述第三数据库表的表结构信息和所述第四数据库表的表结构信息,获取第一列、第二列、第三列和第四列;
其中,所述第一列为所述第三数据库表包括但所述第四数据库表不包括的列,所述第二列为所述第四数据库表包括但所述第三数据库表不包括的列,所述第三列为所述第三数据库表中的列,所述第四列为所述第四数据库表中的列,所述第三列的列名与所述第四列的列名相同且所述第三列的数据类型与所述第四列的数据类型不同;
在所述第三数据库表中删除所述第一列,添加所述第二列,并将所述第三列的数据类型设置为所述第四列的数据类型。
在本发明实施例中,获取旧版本软件的数据库包括的数据库表的表结构信息,获取新版本软件的数据库包括的数据库表的表结构信息,获取旧版本软件与新版本软件之间的差异信息,根据差异信息自动升级旧版本软件的数据库,无需开发人员对软件的每个历史版本的数据库均编写对应最新版本软件的数据库的升级脚本;减少了技术人员的工作量,降低了人工成本,提高了升级软件数据库的智能性。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种升级软件数据库的方法,其特征在于,所述方法包括:
获取新版本软件的软件包,如果终端本地存在所述新版本软件对应的旧版本软件,则获取所述旧版本软件的数据库包括的数据库表的表结构信息;
从所述新版本软件的软件包中获取所述新版本软件的全局静态数据;
从所述全局静态数据中获取所述新版本软件的数据库包括的数据库表的表结构信息;
比较所述旧版本软件的数据库包括的数据库表的表结构信息和所述新版本软件的数据库包括的数据库表的表结构信息,得到第一数据库表、第二数据库表、第三数据库表和第四数据库表;
将所述第一数据库表、所述第二数据库表、所述第三数据库表和所述第四数据库确定为所述旧版本软件与所述新版本软件之间的差异信息;
在所述旧版本数据库中删除所述第一数据库表;
根据所述第二数据库表的表结构信息,在所述旧版本软件的数据库中建立所述第二数据库表;
根据所述第四数据库表的表结构信息,修改所述第三数据库表;
其中,所述第一数据库表为所述旧版本软件包括但所述新版本软件不包括的数据库表,所述第二数据库表为所述新版本软件包括但所述旧版本软件不包括的数据库表,所述第三数据库表为所述旧版本软件中的数据库表,所述第四数据库表为所述新版本软件中的数据库表,所述第三数据库表的表名与所述第四数据库表的表名相同且所述第三数据库表的表结构信息与所述第四数据库表的表结构信息不同。
2.如权利要求1所述的方法,其特征在于,所述获取所述旧版本软件的数据库包括的数据库表的表结构信息,包括:
获取所述旧版本软件的数据库包括的数据库表;
解析所述数据库表,得到所述数据库表的表名、所述数据库表包括的各列的列名和数据类型并作为所述旧版本软件的数据库包括的数据库表的表结构信息。
3.如权利要求1所述的方法,其特征在于,所述根据所述第四数据库表的表结构信息,修改所述第三数据库表,包括:
根据所述第四数据库表的表结构信息,建立与所述第四数据库的表结构相同的新数据库表;
将所述第三数据库表中包括的数据存储在所述新数据库表中;
在所述旧版本软件中将所述第三数据库表更新为所述新数据库表。
4.如权利要求1所述的方法,其特征在于,所述根据所述第四数据库表的表结构信息,修改所述第三数据库表,包括:
根据所述第三数据库表的表结构信息和所述第四数据库表的表结构信息,获取第一列、第二列、第三列和第四列;
其中,所述第一列为所述第三数据库表包括但所述第四数据库表不包括的列,所述第二列为所述第四数据库表包括但所述第三数据库表不包括的列,所述第三列为所述第三数据库表中的列,所述第四列为所述第四数据库表中的列,所述第三列的列名与所述第四列的列名相同且所述第三列的数据类型与所述第四列的数据类型不同;
在所述第三数据库表中删除所述第一列,添加所述第二列,并将所述第三列的数据类型设置为所述第四列的数据类型。
5.一种升级软件数据库的装置,其特征在于,所述装置包括:
第一获取模块,用于获取新版本软件的软件包,如果终端本地存在所述新版本软件对应的旧版本软件,则获取所述旧版本软件的数据库包括的数据库表的表结构信息;
第二获取模块,用于所述获取新版本软件的数据库包括的数据库表的表结构信息;
第三获取模块,用于根据所述旧版本软件的数据库包括的数据库表的表结构信息和所述新版本软件的数据库包括的数据库表的表结构信息,获取所述旧版本软件与所述新版本软件之间的差异信息;
升级模块,用于根据所述差异信息升级所述旧版本软件的数据库;
其中,所述第二获取模块包括:
第二获取单元,用于从所述新版本软件的软件包中获取所述新版本软件的全局静态数据;
第三获取单元,用于从所述全局静态数据中获取所述新版本软件的数据库包括的数据库表的表结构信息;
其中,所述第三获取模块包括:
比较单元,用于比较所述旧版本软件的数据库包括的数据库表的表结构信息和所述新版本软件的数据库包括的数据库表的表结构信息,得到第一数据库表、第二数据库表、第三数据库表和第四数据库表;
其中,所述第一数据库表为所述旧版本软件包括但所述新版本软件不包括的数据库表,所述第二数据库表为所述新版本软件包括但所述旧版本软件不包括的数据库表,所述第三数据库表为所述旧版本软件中的数据库表,所述第四数据库表为所述新版本软件中的数据库表,所述第三数据库表的表名与所述第四数据库表的表名相同且所述第三数据库表的表结构信息与所述第四数据库表的表结构信息不同;
确定单元,用于将所述第一数据库表、所述第二数据库表、所述第三数据库表和所述第四数据库确定为所述旧版本软件与所述新版本软件之间的差异信息;
其中,所述升级模块包括:
删除单元,用于在所述旧版本数据库中删除所述第一数据库表;
建立单元,用于根据所述第二数据库表的表结构信息,在所述旧版本软件的数据库中建立所述第二数据库表;
修改单元,用于根据所述第四数据库表的表结构信息,修改所述第三数据库表。
6.如权利要求5所述的装置,其特征在于,所述第一获取模块包括:
第一获取单元,用于获取所述旧版本软件的数据库包括的数据库表;
解析单元,用于解析所述数据库表,得到所述数据库表的表名、所述数据库表包括的各列的列名和数据类型并作为所述旧版本软件的数据库包括的数据库表的表结构信息。
7.如权利要求5所述的装置,其特征在于,所述修改单元包括:
建立子单元,用于根据所述第四数据库表的表结构信息,建立与所述第四数据库的表结构相同的新数据库表;
存储子单元,用于将所述第三数据库表中包括的数据存储在所述新数据库表中;
更新子单元,用于在所述旧版本软件中将所述第三数据库表更新为所述新数据库表。
8.如权利要求5所述的装置,其特征在于,所述修改单元包括:
获取子单元,用于根据所述第三数据库表的表结构信息和所述第四数据库表的表结构信息,获取第一列、第二列、第三列和第四列;
其中,所述第一列为所述第三数据库表包括但所述第四数据库表不包括的列,所述第二列为所述第四数据库表包括但所述第三数据库表不包括的列,所述第三列为所述第三数据库表中的列,所述第四列为所述第四数据库表中的列,所述第三列的列名与所述第四列的列名相同且所述第三列的数据类型与所述第四列的数据类型不同;
删除子单元,用于在所述第三数据库表中删除所述第一列,添加所述第二列,并将所述第三列的数据类型设置为所述第四列的数据类型。
9.一种升级软件数据库的设备,其特征在于,所述设备包括存储器和处理器,用于执行如权利要求1至4任一项权利要求所述的一种升级软件数据库的方法。
CN201410035800.7A 2014-01-24 2014-01-24 一种升级软件数据库的方法、装置及设备 Active CN103810257B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410035800.7A CN103810257B (zh) 2014-01-24 2014-01-24 一种升级软件数据库的方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410035800.7A CN103810257B (zh) 2014-01-24 2014-01-24 一种升级软件数据库的方法、装置及设备

Publications (2)

Publication Number Publication Date
CN103810257A CN103810257A (zh) 2014-05-21
CN103810257B true CN103810257B (zh) 2018-07-13

Family

ID=50707027

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410035800.7A Active CN103810257B (zh) 2014-01-24 2014-01-24 一种升级软件数据库的方法、装置及设备

Country Status (1)

Country Link
CN (1) CN103810257B (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104102511A (zh) * 2014-07-17 2014-10-15 福建星海通信科技有限公司 一种基于SQL Server的脚本自动升级系统及方法
CN105335436A (zh) * 2014-08-11 2016-02-17 方正国际软件(北京)有限公司 一种升级数据库结构的方法和设备
CN104182344B (zh) * 2014-08-25 2017-02-15 腾讯科技(深圳)有限公司 一种覆盖安装测试方法及装置
WO2016146019A1 (en) * 2015-03-19 2016-09-22 Huawei Technologies Co., Ltd. Method and restructuring server for restructuring data stores of a multi-dimensional database
CN106156052A (zh) * 2015-03-27 2016-11-23 中兴通讯股份有限公司 终端数据升级方法及装置
CN104965735B (zh) * 2015-06-18 2018-10-19 北京京东尚科信息技术有限公司 用于生成升级sql脚本的装置
CN106503019A (zh) * 2015-09-08 2017-03-15 中兴通讯股份有限公司 一种获取数据库变更信息的方法和装置
CN105224361B (zh) * 2015-09-15 2018-05-25 华讯方舟科技有限公司 一种对sqlite3型嵌入式数据库进行升级的方法及系统
CN105373631A (zh) * 2015-12-18 2016-03-02 河南思维自动化设备股份有限公司 基于SQLSever的数据库结构自动升级方法
CN106028152B (zh) * 2016-06-13 2020-02-07 天脉聚源(北京)传媒科技有限公司 一种机顶盒操作系统升级方法及装置
CN106407375A (zh) * 2016-09-12 2017-02-15 杭州迪普科技有限公司 数据库升级的方法及装置
WO2018126379A1 (zh) * 2017-01-05 2018-07-12 深圳市前海中康汇融信息技术有限公司 智能终端应用软件的数据库管理方法
WO2018126376A1 (zh) * 2017-01-05 2018-07-12 深圳市前海中康汇融信息技术有限公司 智能终端应用软件的数据库管理系统
CN108572996B (zh) * 2017-03-14 2021-02-26 北京京东尚科信息技术有限公司 数据库表结构的同步方法、装置、电子设备和存储介质
CN109189783B (zh) * 2018-08-03 2023-10-03 北京涛思数据科技有限公司 一种时序数据库表结构改变处理方法
CN109241071A (zh) * 2018-08-23 2019-01-18 海南新软软件有限公司 一种Android数据库升级方法、装置及终端
CN110865829B (zh) * 2018-08-28 2024-04-16 京东科技控股股份有限公司 数据库升级方法、系统、设备及存储介质
CN111142921A (zh) * 2018-11-02 2020-05-12 成都鼎桥通信技术有限公司 软件升级方法及装置
CN109814895A (zh) * 2018-11-29 2019-05-28 广州因特信息科技有限公司 一种自动化的数据库更新方法及系统
CN109492014A (zh) * 2018-12-26 2019-03-19 广州市诚毅科技软件开发有限公司 一种数据库模型包创建方法、装置及设备
CN111078273B (zh) * 2019-12-09 2022-08-12 京东科技控股股份有限公司 一种信息获取方法及装置、存储介质
CN111506593B (zh) * 2020-04-24 2023-07-18 东莞市精驰软件有限公司 软件系统数据升级方法、装置、设备及存储介质
CN111901358A (zh) * 2020-08-07 2020-11-06 杭州安恒信息技术股份有限公司 一种入侵检测规则更新方法、装置、设备及可读存储介质
CN112130882A (zh) * 2020-09-29 2020-12-25 中国银行股份有限公司 版本更新的方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101499069A (zh) * 2008-02-02 2009-08-05 中兴通讯股份有限公司 内存数据库文件的更新方法及更新装置
CN101650663A (zh) * 2009-08-27 2010-02-17 中兴通讯股份有限公司 一种数据库系统及其升级的方法
CN101908064A (zh) * 2010-07-20 2010-12-08 中兴通讯股份有限公司 数据库备份恢复方法和装置
CN102253975A (zh) * 2011-06-16 2011-11-23 上海博康智能网络科技有限公司 一种数据库自动转换系统及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102402559A (zh) * 2010-09-16 2012-04-04 中兴通讯股份有限公司 一种数据库升级脚本的生成方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101499069A (zh) * 2008-02-02 2009-08-05 中兴通讯股份有限公司 内存数据库文件的更新方法及更新装置
CN101650663A (zh) * 2009-08-27 2010-02-17 中兴通讯股份有限公司 一种数据库系统及其升级的方法
CN101908064A (zh) * 2010-07-20 2010-12-08 中兴通讯股份有限公司 数据库备份恢复方法和装置
CN102253975A (zh) * 2011-06-16 2011-11-23 上海博康智能网络科技有限公司 一种数据库自动转换系统及方法

Also Published As

Publication number Publication date
CN103810257A (zh) 2014-05-21

Similar Documents

Publication Publication Date Title
CN103810257B (zh) 一种升级软件数据库的方法、装置及设备
US10198347B1 (en) Systems and methods for testing a software application
US7370270B2 (en) XML schema evolution
US20160306612A1 (en) Determining errors and warnings corresponding to a source code revision
CN111782265B (zh) 基于字段级血缘关系的软件资源系统及其建立方法
CN102968373B (zh) 一种测试系统的维护方法及装置
CN112232074B (zh) 实体关系抽取方法、装置、电子设备及存储介质
US10922216B1 (en) Intelligent automation test workflow
US20150248404A1 (en) Database schema migration
CN103744680A (zh) 一种业务流程处理方法及装置
CN105335246B (zh) 一种基于问答网站分析的程序崩溃缺陷自动修复方法
CN101882135B (zh) 一种兴趣点数据处理方法和装置
US20150278231A1 (en) System and method for customizing archive of a device driver generator tool for a user
CN109343836A (zh) 数据序列化、数据反序列方法、装置及设备
US10592400B2 (en) System and method for creating variants in a test database during various test stages
CN105677805A (zh) 一种利用protobuf的数据存储、读取方法及装置
CN116560683A (zh) 软件更新方法、装置、设备及存储介质
US20210406229A1 (en) Schema Agnostic Migration Of Delineated Data Between Relational Databases
US7890936B2 (en) Method of reverse read code to locate useful information
US7844583B2 (en) Method and system for obtaining files from a set of sources
CN112817931B (zh) 一种增量版本文件的生成方法及装置
US7546314B1 (en) Customizing application programs
CN102043853A (zh) 一种存储数据的更新方法和装置
CN113792026A (zh) 数据库脚本的部署方法、装置及计算机可读存储介质
US11176022B2 (en) Health diagnostics and analytics for object repositories

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant