CN109032611B - 脚本部署方法、装置、计算机设备及存储介质 - Google Patents

脚本部署方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN109032611B
CN109032611B CN201810573712.0A CN201810573712A CN109032611B CN 109032611 B CN109032611 B CN 109032611B CN 201810573712 A CN201810573712 A CN 201810573712A CN 109032611 B CN109032611 B CN 109032611B
Authority
CN
China
Prior art keywords
script
database
deployed
database script
deployment
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
CN201810573712.0A
Other languages
English (en)
Other versions
CN109032611A (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.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen 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 Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Priority to CN201810573712.0A priority Critical patent/CN109032611B/zh
Priority to PCT/CN2018/092591 priority patent/WO2019232828A1/zh
Publication of CN109032611A publication Critical patent/CN109032611A/zh
Application granted granted Critical
Publication of CN109032611B publication Critical patent/CN109032611B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种脚本部署方法、装置、计算机设备及存储介质,所述方法包括:接收初始应用环境下的待部署对象和目标应用环境的标识信息;针对每个待部署对象,使用预设的转换脚本创建与该待部署对象对应的数据库脚本;对数据库脚本进行合法性校验;在校验通过后,使用数据库脚本在模拟环境中进行预部署;根据预部署的部署结果获取目标脚本;将目标脚本部署到目标应用环境中。本发明的技术方案能够有效提高创建数据库脚本的速率,节省人力资源,并通过对数据库脚本的校验调整,提高部署成功率,从而提高开发工作效率。

Description

脚本部署方法、装置、计算机设备及存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种脚本部署方法、装置、计算机设备及存储介质。
背景技术
开发人员在项目开发过程中,通常会在开发环境下的各个数据库中创建相应的表,并且在对表进行定义或者修改表结构后,整理对应的建表语句,再生成数据库脚本,部署到各种应用环境中使用,例如,将开发环境中的数据库脚本部署到测试环境中进行测试工作。
但是,目前开发人员在部署数据库脚本时,需要依靠人工对数据表进行整理,并生成数据库脚本,这种整理数据库脚本的方式耗时长,并且容易出现错误,同时在将数据库脚本发布到目标应用环境之后,存在该数据库脚本能够在开发环境正常执行,而在目标应用环境中执行报错的情况,此时需要进行人工查找出错原因,并对数据库脚本进行修改后重新移交部署,从而造成开发的工作效率降低。
发明内容
基于此,有必要针对上述技术问题,提供一种可以自动生成数据库脚本,并对数据库脚本进行校验调整,提高开发效率的脚本部署方法、装置、计算机设备及存储介质。
一种脚本部署方法,包括:
接收初始应用环境下的待部署对象和目标应用环境的标识信息;
根据所述标识信息获取所述目标应用环境的配置信息,并使用该配置信息对模拟环境进行配置;针对每个所述待部署对象,使用预设的转换脚本创建与该待部署对象对应的数据库脚本;
对所述数据库脚本进行合法性校验,得到校验结果;
若所述校验结果为校验通过,则使用所述数据库脚本在所述模拟环境中进行预部署;
若所述预部署的部署结果为成功,则将预部署成功的数据库脚本标记为目标脚本;
若所述预部署的部署结果为失败,则获取失败信息,按照该失败信息对应的预设修改方式,对预部署失败的数据库脚本的内容进行调整,并将调整后的数据库脚本标记为所述目标脚本;
将所述目标脚本部署到所述目标应用环境中。
一种脚本部署装置,包括:
信息接收模块,用于接收初始应用环境下的待部署对象和目标应用环境的标识信息;
参数配置模块,用于根据所述标识信息获取所述目标应用环境的配置信息,并使用该配置信息对模拟环境进行配置;
数据库脚本创建模块,用于针对每个所述待部署对象,使用预设的转换脚本创建与该待部署对象对应的数据库脚本;
数据库脚本校验模块,用于对所述数据库脚本进行合法性校验,得到校验结果;
预部署模块,用于若所述校验结果为校验通过,则使用所述数据库脚本在所述模拟环境中进行预部署;
第一标记模块,用于若所述预部署的部署结果为成功,则将预部署成功的数据库脚本标记为目标脚本;
第二标记模块,用于若所述预部署的部署结果为失败,则获取失败信息,按照该失败信息对应的预设修改方式,对预部署失败的数据库脚本的内容进行调整,并将调整后的数据库脚本标记为所述目标脚本;
目标脚本部署模块,用于将所述目标脚本部署到所述目标应用环境中。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述脚本部署方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述脚本部署方法的步骤。
上述脚本部署方法、装置、计算机设备及存储介质,通过接收初始应用环境下的待部署对象和目标应用环境的标识信息,针对每个待部署对象,使用预设的转换脚本创建与该待部署对象对应的数据库脚本,提高数据库脚本的创建效率,减少开发人员的重复性劳动,使用校验通过的数据库脚本在模拟环境中进行预部署,并将部署成功的数据库脚本标记为目标脚本,同时,若数据库脚本执行部署出错,则根据目标应用环境的配置信息对该数据库脚本进行调整,将调整后的数据库脚本标记为目标脚本,将目标脚本部署到目标应用环境,从而提高数据库脚本部署的成功率,得到与初始应用环境下的待部署对象一致的对象结构,避免在目标应用环境中部署数据库脚本出现报错的情况,节省人力资源,提高开发工作效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中脚本部署方法的一应用环境示意图;
图2是本发明一实施例中脚本部署方法的一实现流程图;
图3是图2中步骤S3的一具体流程图;
图4是本发明实施例中提供的脚本部署方法中对数据库脚本的文件名进行校验的一具体流程图;
图5是本发明实施例中提供的脚本部署方法中对数据库脚本的内容校验的一具体流程图;
图6是图2中步骤S5的一具体流程图;
图7是本发明一实施例中脚本部署装置的一示意图;
图8是本发明一实施例中计算机设备的一示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请提供的脚本部署的方法,可应用在如图1的应用环境中,该应用环境包括服务端和客户端,其中,服务端和客户端之间通过网络进行连接,用户通过客户端输入待部署对象和目标应用环境的标识信息,客户端将待部署对象和目标应用环境的标识信息发送到服务端,服务端对待部署对象进行处理,根据该待部署对象自动生成对应的数据库脚本,并对数据库脚本进行校验调整,部署到目标应用环境中。客户端具体可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务端具体可以用独立的服务器或者多个服务器组成的服务器集群实现。本发明实施例提供的脚本部署方法应用于服务端。
在一实施例中,图2示出本实施例中脚本部署方法的一流程图,该方法应用在图1中的服务端。如图2所示,该脚本部署方法包括步骤S1至步骤S8,详述如下:
S1:接收初始应用环境下的待部署对象和目标应用环境的标识信息。
在本实施例中,初始应用环境为待部署对象所在的应用环境,初始应用环境为开发环境、测试环境、过渡环境或者生产环境等,目标应用环境为需要将待部署对象进行部署的应用环境,目标应用环境为开发环境、测试环境、过渡环境或者生产环境等,目标应用环境的标识信息是用于唯一标识应用环境的标识信息,待部署对象为数据库中需要进行复制或者备份的数据库或表,其中,数据库包括但不限于应用库、报表库和生产库等。
具体地,服务端首先对用户的身份信息进行验证,该身份信息包括用户名和密码,若服务端在合法身份信息库中匹配到与该用户的用户名和密码一致的合法身份信息,则确认校验通过,并接收用户通过客户端输入的待部署对象和目标应用环境的标识信息,用户输入的待部署对象包括该待部署对象所在数据库名称和表名称。
需要说明的是,用户可以在客户端选择数据库作为待部署对象,也可以在客户端选择数据库中的表作为待部署对象,具体可以根据实际应用的需要进行选择。
例如,在项目开发过程,用户需要将开发环境下的数据库A部署到测试环境下进行测试,则开发环境为初始应用环境,数据库A为待部署对象,测试环境为目标应用环境。
S2:根据标识信息获取目标应用环境的配置信息,并使用该配置信息对模拟环境进行配置。
在本实施例中,根据目标应用环境的标识信息确定目标应用环境,并通过网络连接访问该目标应用环境,查询该目标环境的配置信息,该目标应用环境的配置信息具体可以为目标应用环境中配置的环境变量参数,根据查询得到的配置信息对模拟环境进行配置,使得模拟环境的配置信息与目标应用环境的配置信息相同。
需要说明的是,模拟环境可以为单独的一台服务器,也可以为服务器集群,此处不做限制,具体可以根据实际应用的需要进行设置。
S3:针对每个待部署对象,使用预设的转换脚本创建与该待部署对象对应的数据库脚本。
具体地,根据用户输入的待部署对象,服务端通过用户的信息以及数据库名称,连接到该数据库,获取待部署对象的具体内容,包括待部署的数据库或表,并根据待部署对象的具体内容,使用预设的转换脚本生成与该待部署对象对应的数据库脚本。
其中,数据库脚本的内容包括存储过程、事务和函数等,但并不限于此,数据库脚本的内容可以根据具体的需要部署的待部署对象的具体内容进行创建,按照预设的转换脚本创建得到的数据库脚本具有占用内存小,方便备份和移植的特点。
S4:对数据库脚本进行合法性校验,得到校验结果。
具体地,根据预设的项目开发要求,对创建的数据库脚本进行合法性校验,若数据库脚本符合预设的项目开发要求,则表示数据库脚本是合法的,即校验结果为校验通过,否则,若数据库脚本不符合预设的项目开发要求,则表示数据库脚本是不合法的,即校验结果为校验不通过。
需要说明的是,该项目开发要求是为了统一规范开发过程而预先设定的,不同的项目其项目开发要求可能相同也可能不相同,具体的项目开发要求可以根据实际项目的需要进行设定。
进一步地,合法性校验包括文件名校验和业务属性校验,预设的项目开发要求具体可以是对数据库脚本名称进行预设命名方式,以及对开发的数据进行预设业务属性。文件名校验具体可以是根据预设的命名方式,校验创建的数据库脚本的命名是否合法,业务属性校验具体可以是根据预设的业务属性,校验创建的数据库脚本的内容是否合法,以便确定数据库脚本是否合法。
S5:若校验结果为校验通过,则使用数据库脚本在模拟环境中进行预部署。
具体地,模拟环境是根据目标应用环境的配置信息进行模拟得到的应用环境,若根据步骤S4得到的校验结果为校验通过,则使用校验通过的数据库脚本,在模拟环境中进行预部署,测试数据库脚本的运行状况,以便于验证在模拟环境下执行数据库脚本后,是否能够得到与待部署对象一致的对象结构,其中,对象结构包括表的数据和表的结构。
需要说明的是,若在模拟环境下执行数据库脚本之后,得到的对象结构与待部署对象的对象结构一致,则确定预部署的部署结果为成功,若在模拟环境下执行数据库脚本之后,出现执行失败的情况,或者得到的对象结构与待部署对象的对象结构不一致,则确定预部署的部署结果为失败。
S6:若预部署的部署结果为成功,则将预部署成功的数据库脚本标记为目标脚本。
在本实施例中,根据步骤S5得到的预部署结果,若预部署的部署结果为成功,则表示该数据库脚本也能够成功部署与目标应用环境,将该数据库脚本标记为目标脚本,用于部署到目标应用环境中。
S7:若预部署的部署结果为失败,则获取失败信息,按照该失败信息对应的预设修改方式,对预部署失败的数据库脚本的内容进行调整,并将调整后的数据库脚本标记为目标脚本。
在本实施例中,若预部署的部署结果为失败,则根据模拟环境下的运行日志信息,获取执行失败的原因,或者与待部署对象的对象结构不一致的地方,确定失败信息,并根据该失败信息包含的错误标识码,按照该错误标识码对应的预设修改方式,对预部署失败的数据库脚本的内容进行调整,将调整后的数据库脚本标记为目标脚本,用于部署到目标应用环境中。
需要说明的是,预设的修改方式具体可以是根据数据库脚本在不同应用环境下部署时容易出现的错误在服务端中预先进行设置的修改方式,每个错误标识码对应一种修改方式,若检测到错误标识码,则调用对应的修改方式对预部署失败的数据库脚本的内容进行调整。
进一步地,若失败信息中没有携带错误标识码,即为未知项错误,则将数据库脚本在模拟环境下预部署失败的失败信息输出到客户端,并给出相应的错误提示,由用户进行确认和调整,并接收用户调整后的数据库脚本,将调整后的数据库脚本标记为目标脚本。
例如,初始应用环境在Linux环境下,使用的是PL*SQL数据库管理工具,目标应用环境也是在Linux环境下,但是使用的是SQL*Plus数据库管理工具,在将数据库脚本部署到与目标应用环境的配置信息相同的模拟环境后,数据库脚本在模拟环境中执行完成,没有出现报错的信息,但是待部署对象中存在的表字段,实际上在模拟环境中该表字段却没有增加,出现与待部署对象的对象结构不一致的情况,根据失败信息中返回的错误标识码,检测出该失败原因是由于数据库脚本中注释位置不当而造成,数据库脚本中存在语句结束符后增加了注释的现象,该语句结束符包括句号、分号和注释符号等,因为SQL*Plus数据库管理工具无法解析语句结束符后面的内容,导致SQL*Plus数据库管理工具无法识别该命令类型,从而出现部署错误的情况,根据该错误标识码,调用相应的修改方式,将该注释调整到语句结束符前面,通过调整注释的位置,使得数据库脚本能够在目标应用环境中成功执行,避免错误情况的发生。
S8:将目标脚本部署到目标应用环境中。
在本实施例中,获取步骤S6或步骤S7标记的目标脚本,将目标脚本发送到目标应用环境,并驱动目标应用环境启动预设的命令行执行该目标脚本,从而将目标脚本部署到目标应用环境中,还原出待部署对象的对象结构,在目标环境下进行使用,其中,预设的命令为执行脚本文件的命令。
由于模拟环境的配置信息与目标应用环境的配置信息相同,并且经过预部署的校验调整,能够保证目标脚本在目标应用环境中成功部署,避免目标脚本在目标应用环境执行失败的情况,同时也不需要在目标应用环境对目标脚本进行重复测试,从而提高了开发工作的效率。
在本实施例中,通过接收初始应用环境下的待部署对象和目标应用环境的标识信息,针对每个待部署对象,使用预设的转换脚本创建与该待部署对象对应的数据库脚本,提高数据库脚本的创建效率,减少开发人员的重复性劳动,使用校验通过的数据库脚本在模拟环境中进行预部署,并将部署成功的数据库脚本标记为目标脚本,同时,若数据库脚本执行部署出错,则根据目标应用环境的配置信息对该数据库脚本进行调整,将调整后的数据库脚本标记为目标脚本,将目标脚本部署到目标应用环境,从而提高数据库脚本部署的成功率,得到与初始应用环境下的待部署对象一致的对象结构,避免在目标应用环境中部署数据库脚本出现报错的情况,节省人力资源,提高开发工作效率。
在一实施例中,如图3所示,步骤S3中,即针对每个待部署对象,使用预设的转换脚本创建与该待部署对象对应的数据库脚本,具体包括如下步骤:
S31:获取每个待部署对象的对象结构。
在本实施例中,根据用户在客户端输入的待部署对象,通过用户的信息以及数据库名称,连接到待部署对象所在的数据库,并获取该待部署对象的对象结构,该对象结构包括数据库中表的数据和表的结构。
S32:根据每个对象结构,使用预设的转换脚本生成该对象结构对应的SQL语句。
在本实施例中,根据每个对象结构,使用预设的转换脚本生成与该对象结构对应的SQL(Structured Query Language,结构化查询语言)语句,其中,SQL语句包括但不限于建表语句、建索引语句、建同义词语句、表授权语句和建表注释。
例如,根据待部署对象中的P表,使用预设的建表语句的转换脚本生成的建表语句为:
CREATE TABLE P(Id int,Name varchar(255),Sex char(20),City varchar(255));
该建表语句表示创建一个P表,其中,P表包括列名为Id、Name、Sex和City的四个列,Id列的数据类型是int,表示整型数据,Sex列的数据类型是char,表示固定存储为20个字节的字符串,Name列和City列的数据类型是varchar,表示可变长度的字符串,最大长度为255个字符。
S33:将每个对象结构对应的SQL语句整合成待部署对象对应的数据库脚本。
在本实施例中,根据步骤S32生成的SQL语句,按照对象结构的创建顺序,将相应的SQL语句按照顺序整合成待部署对象对应的数据库脚本,其中,每个数据库脚本对应一具体的待部署对象。
在本实施例中,通过连接到待部署对象所在的数据库中,获取每个对象的对象结构,根据每个对象结构,使用预设的转换脚本生成该对象结构对应的SQL语句,再将每个对象结构对应的SQL语句整合成待部署对象对应的数据库脚本,减少了开发人员的重复性劳动工作,节省人力资源,从而提高了数据库脚本的创建效率。
在一实施例中,如图4所示,当合法性校验为文件名校验时,步骤S4中所提及的对数据库脚本进行合法性校验,得到校验结果,具体包括如下步骤:
S411:根据预设的命名方式,对数据库脚本的文件名进行校验。
在本实施例中,用户根据创建的数据库脚本对其进行命名,在对数据库脚本进行合法性校验过程中,当合法性校验为文件名校验时,根据预设的命名方式,遍历数据库脚本的文件名,并对文件名进行校验,以便校验数据库脚本的文件名是否合法,该预设的命名方式具体可以根据实际应用的需要进行设置,此处不做限制。
需要说明的是,部署时目标应用环境需要根据文件名的标识序号确定数据库SID(System Identifier,***标识符),SID是一个数据库的唯一标识符,在建立数据库时***赋予的一个初始ID,若文件名不符合预设的命名规则,则会出现部署报错的情况。
例如,具体的命名方式可以设置为:标识序号_用户名_类型_操作_对象名称_创建人.sql,服务端将按照该命名方式对数据库脚本的文件名进行校验。
S412:若数据库脚本的文件名不符合预设的命名方式的要求,则输出该数据库脚本的文件名和错误信息,以使用户根据错误信息对该文件名进行修改。
在本实施例中,在对数据库脚本的文件名进行校验过程中,若检测到建表脚本的文件名不符合预设的命名方式,则对该数据库脚本的文件名进行标记,并输出该数据库脚本的文件名和错误信息,其中,错误信息为该数据库脚本的文件名不符合预设的命名方式的信息,以使用户根据错误信息对该文件名进行修改,避免由于对数据库脚本的命名不合法而造成部署阶段出现错误。
S413:接收并校验修改后的文件名,若该修改后的文件名符合预设的命名方式的要求,则校验通过。
在本实施例中,服务端接收用户在客户端输入修改后的文件名,并对该修改后的文件名进行校验,若该修改后的文件名符合预设的命名方式的要求,则表示修改后的文件名是合法的,数据库脚本的文件名校验通过。
在本实施例中,通过以预设的命名方式为标准,对数据库脚本的文件名进行校验,若数据库脚本的文件名不符合预设的命名方式的要求,则输出该数据库脚本的文件名和错误信息,以使用户根据错误信息对该文件名进行修改,并接收修改后的文件名进行校验,直至修改后的文件名符合预设的命名方式的要求为校验通过,避免由于对数据库脚本的命名不合法而造成部署阶段出现错误,提高数据库脚本的正确率。
在一实施例中,如图5所示,当合法性校验为业务属性校验时,步骤S4中所提及的对数据库脚本进行合法性校验,得到校验结果,具体包括如下步骤:
S421:检测数据库脚本是否符合预设的业务属性。
具体地,每个项目开发的业务需求不一样,各个项目有其对应的业务规范,预设的业务属性具体可以根据实际项目的业务规范进行设置,在对数据库脚本进行合法性校验过程中,当合法性校验为业务属性校验时,根据该预设的业务属性,遍历校验数据库脚本的内容是否合法。
例如,预设的业务属性包括所有外键上需要创建索引、主键字段不能为空值、所有外键上需要创建索引,以及不能包含nologging选项等业务属性,其中,nologging为非日志模式,若开发项目中包含nologging选项,将影响数据库的灾备和恢复,数据灾备为数据从应用主机的硬盘或阵列中复制到其他存储介质的过程。
S422:若数据库脚本的内容不符合预设的业务属性,则按照预设的业务属性对数据库脚本的内容进行更新。
在本实施例中,若数据库脚本的内容不符合业务属性,则按照预设的业务属性对数据库脚本的内容进行更新,将数据库脚本中不符合业务属性的内容调整为符合业务属性的内容。
例如,预设的业务属性为建表索引需要使用16条线程,若检测到数据库脚本中的建表索引没有使用16条线程,则对该数据库脚本中的内容进行调整,更新成建表索引生成16条线程的SQL语句。
进一步地,若创建的数据库脚本不符合业务属性,但为未知项错误,则将数据库脚本中不符合业务属性的内容输出到客户端,并给出相应的错误提示,由用户进行确认和修改,在接收到用户重新输入的更新后的待部署对象后,按照与本发明实施例步骤S3相同的处理过程,重新生成数据库脚本作为更新后的数据库脚本。
S423:对更新后的数据库脚本进行校验,若更新后的数据库脚本符合预设的业务属性,则校验通过。
在本实施例中,获取更新后的数据库脚本,并对更新后的数据库脚本进行校验,若更新后的数据库脚本的内容符合预设的业务属性,则表示更新后的数据库脚本的内容是合法的,数据库脚本的内容校验通过。
在本实施例中,通过以预设的业务属性为标准,对数据库脚本的内容进行校验,若数据库脚本的内容不符合预设的业务属性,则按照预设的业务属性对数据库脚本的内容进行更新,或者将数据库脚本中不符合预设的业务属性的内容输出到客户端,由用户进行确定错误的原因,并对更新后的数据库脚本进行校验,直至更新后的数据库脚本符合预设的业务属性为校验通过,提高数据库脚本的正确率,减少出错或者不符合业务属性的开发情况。
在一实施例中,如图6所示,步骤S5中提及的使用数据库脚本在模拟环境中进行预部署,具体包括如下步骤:
S51:将数据库脚本导入模拟环境。
在本实施例中,将数据库脚本导入模拟环境中的统一路径下,并将数据库脚本的文件名汇总生成汇总脚本存储于该统一路径下。
例如,将数据库脚本a.sql和b.sql复制到统一路径下,并根据数据库脚本
a.sql和b.sql,将数据库脚本的文件名汇总生成汇总脚本c.sql存储于该路径下,其中,c.sql的内容为@@a.sql;@@b.sql。
S52:在模拟环境中对数据库脚本进行运行测试,得到预部署的部署结果。
在本实施例中,根据步骤S51得到的汇总脚本,使用脚本执行命令执行该汇总脚本,例如,SQL>@c.sql,在模拟环境中进行预部署,模拟了在目标应用环境下的部署过程,测试数据库脚本的运行状况,得到数据库脚本执行之后生成的部署对象,用于与初始应用环境下的待部署对象进行对比,若得到部署对象的对象结构与待部署对象的对象结构一致,则确定预部署的部署结果为成功,若出现执行失败的情况,或者得到部署对象的对象结构与待部署对象的对象结构不一致,则确定预部署的部署结果为失败。
在本实施例中,通过将数据库脚本导入模拟环境下的统一路径中,将数据库脚本批量进行预部署,提高了部署的效率,在模拟环境中对数据库脚本进行运行测试,根据数据库脚本的执行状况,得到预部署的部署结果,充分对目标应用环境的部署过程进行了模拟操作,避免因为初始应用环境和目标应用环境的差异性等带来的缺陷漏测而造成部署失败,对项目开发工作造成不必要的影响。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种脚本部署装置,该脚本部署装置与上述实施例中脚本部署方法一一对应。如图7所示,该脚本部署装置包括:信息接收模块71、参数设置模块72、数据库脚本创建模块73、数据库脚本校验模块74、预部署模块75、第一标记模块76、第二标记模块77和目标脚本部署模块78。各功能模块详细说明如下:
信息接收模块71,用于接收初始应用环境下的待部署对象和目标应用环境的标识信息;
参数配置模块72,用于根据标识信息获取目标应用环境的配置信息,并使用该配置信息对模拟环境进行配置;
数据库脚本创建模块73,用于针对每个待部署对象,使用预设的转换脚本创建与该待部署对象对应的数据库脚本;
数据库脚本校验模块74,用于对数据库脚本进行合法性校验,得到校验结果;
预部署模块75,用于若校验结果为校验通过,则使用数据库脚本在模拟环境中进行预部署,其中,模拟环境的配置信息与目标应用环境的配置信息相同;
第一标记模块76,用于若预部署的部署结果为成功,则将预部署成功的数据库脚本标记为目标脚本;
第二标记模块77,用于若预部署的部署结果为失败,则获取失败信息,按照该失败信息对应的预设修改方式,对预部署失败的数据库脚本的内容进行调整,并将调整后的数据库脚本标记为目标脚本;
目标脚本部署模块78,用于将目标脚本部署到目标应用环境中。
进一步地,数据库脚本创建模块73包括:
对象结构获取单元731,用于获取每个待部署对象的对象结构;
脚本语句生成单元732,用于根据每个对象结构,使用预设的转换脚本生成该对象结构对应的SQL语句;
数据库脚本创建单元733,用于将每个对象结构对应的SQL语句整合成待部署对象对应的数据库脚本。
进一步地,合法性校验包括文件名校验和业务属性校验。
进一步地,当合法性校验为文件名校验时,数据库脚本校验模块74包括:
脚本名称校验单元7411,用于根据预设的命名方式,对数据库脚本的文件名进行校验;
脚本名称修改单元7412,用于若数据库脚本的文件名不符合预设的命名方式的要求,则输出该数据库脚本的文件名和错误信息,以使用户根据错误信息对该文件名进行修改;
脚本名称接收单元7413,用于接收并校验修改后的文件名,若该修改后的文件名符合预设的命名方式的要求,则校验通过。
进一步地,当合法性校验为业务属性校验时,数据库脚本校验模块74包括:
业务属性校验单元7421,用于检测数据库脚本是否符合预设的业务属性;
内容更新单元7422,用于若数据库脚本的内容不符合预设的业务属性,则按照预设的业务属性对数据库脚本的内容进行更新;
更新脚本校验单元7423,用于对更新后的数据库脚本进行校验,若更新后的数据库脚本符合预设的业务属性,则校验通过。
进一步地,预部署模块75包括:
数据库脚本引用单元751,用于将数据库脚本导入模拟环境;
运行测试单元752,用于在模拟环境中对数据库脚本进行运行测试,得到预部署的部署结果。
关于脚本部署装置的具体限定可以参见上文中对于脚本部署方法的限定,在此不再赘述。上述脚本部署装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种脚本部署方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例脚本部署方法中的步骤,例如图2所示的步骤S1至步骤S8,或者,处理器执行计算机程序时实现上述实施例中脚本部署装置的各模块/单元的功能,例如图7所示模块71至模块78的功能。为避免重复,这里不再赘述。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例脚本部署方法中的步骤,例如图2所示的步骤S1至步骤S8,或者,处理器执行计算机程序时实现上述实施例中脚本部署装置的各模块/单元的功能,例如图7所示模块71至模块78的功能。为避免重复,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

Claims (8)

1.一种脚本部署方法,其特征在于,所述脚本部署方法包括:
接收初始应用环境下的待部署对象和目标应用环境的标识信息;
根据所述标识信息获取所述目标应用环境的配置信息,并使用该配置信息对模拟环境进行配置;其中,所述模拟环境的配置信息与所述目标应用环境的配置信息相同;
针对每个所述待部署对象,使用预设的转换脚本创建与该待部署对象对应的数据库脚本;其中,所述针对每个所述待部署对象,使用预设的转换脚本创建与该待部署对象对应的数据库脚本包括获取每个所述待部署对象的对象结构;所述对象结构包括数据库中表的数据和表的结构;根据每个所述对象结构,使用预设的转换脚本生成该对象结构对应的SQL语句;将每个所述对象结构对应的SQL语句整合成所述待部署对象对应的数据库脚本;
对所述数据库脚本进行合法性校验,得到校验结果;
若所述校验结果为校验通过,则使用所述数据库脚本在所述模拟环境中进行预部署,验证在所述模拟环境下执行所述数据库脚本后,是否能够得到与所述待部署对象一致的对象结构;
若所述预部署的部署结果为成功,则将预部署成功的数据库脚本标记为目标脚本;
若所述预部署的部署结果为失败,则获取失败信息,按照该失败信息对应的预设修改方式,对预部署失败的数据库脚本的内容进行调整,并将调整后的数据库脚本标记为所述目标脚本;
将所述目标脚本部署到所述目标应用环境中。
2.如权利要求1所述的脚本部署方法,其特征在于,所述合法性校验包括文件名校验和业务属性校验。
3.如权利要求2所述的脚本部署方法,其特征在于,当所述合法性校验为所述文件名校验时,所述对所述数据库脚本进行合法性校验,得到校验结果包括:
根据预设的命名方式,对所述数据库脚本的文件名进行校验;
若所述数据库脚本的文件名不符合所述预设的命名方式的要求,则输出该数据库脚本的文件名和错误信息,以使用户根据所述错误信息对该文件名进行修改;
接收并校验修改后的文件名,若该修改后的文件名符合所述预设的命名方式的要求,则校验通过。
4.如权利要求2所述的脚本部署方法,其特征在于,当所述合法性校验为所述业务属性校验时,所述对所述数据库脚本进行合法性校验,得到校验结果包括:
检测所述数据库脚本是否符合预设的业务属性;
若所述数据库脚本的内容不符合所述预设的业务属性,则按照所述预设的业务属性对所述数据库脚本的内容进行更新;
对更新后的数据库脚本进行校验,若所述更新后的数据库脚本符合所述预设的业务属性,则校验通过。
5.如权利要求1至4任一项所述的脚本部署方法,其特征在于,所述使用所述数据库脚本在模拟环境中进行预部署包括:
将所述数据库脚本导入模拟环境;
在所述模拟环境中对所述数据库脚本进行运行测试,得到所述预部署的部署结果。
6.一种脚本部署装置,其特征在于,所述脚本部署装置包括:
信息接收模块,用于接收初始应用环境下的待部署对象和目标应用环境的标识信息;
参数配置模块,用于根据所述标识信息获取所述目标应用环境的配置信息,并使用该配置信息对模拟环境进行配置;其中,所述模拟环境的配置信息与所述目标应用环境的配置信息相同;
数据库脚本创建模块,用于针对每个所述待部署对象,使用预设的转换脚本创建与该待部署对象对应的数据库脚本;其中,所述针对每个所述待部署对象,使用预设的转换脚本创建与该待部署对象对应的数据库脚本包括获取每个所述待部署对象的对象结构;所述对象结构包括数据库中表的数据和表的结构;根据每个所述对象结构,使用预设的转换脚本生成该对象结构对应的SQL语句;将每个所述对象结构对应的SQL语句整合成所述待部署对象对应的数据库脚本;
数据库脚本校验模块,用于对所述数据库脚本进行合法性校验,得到校验结果;
预部署模块,用于若所述校验结果为校验通过,则使用所述数据库脚本在所述模拟环境中进行预部署,验证在所述模拟环境下执行所述数据库脚本后,是否能够得到与所述待部署对象一致的对象结构;
第一标记模块,用于若所述预部署的部署结果为成功,则将预部署成功的数据库脚本标记为目标脚本;
第二标记模块,用于若所述预部署的部署结果为失败,则获取失败信息,按照该失败信息对应的预设修改方式,对预部署失败的数据库脚本的内容进行调整,并将调整后的数据库脚本标记为所述目标脚本;
目标脚本部署模块,用于将所述目标脚本部署到所述目标应用环境中。
7.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5任一项所述脚本部署方法的步骤。
8.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述脚本部署方法的步骤。
CN201810573712.0A 2018-06-06 2018-06-06 脚本部署方法、装置、计算机设备及存储介质 Active CN109032611B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201810573712.0A CN109032611B (zh) 2018-06-06 2018-06-06 脚本部署方法、装置、计算机设备及存储介质
PCT/CN2018/092591 WO2019232828A1 (zh) 2018-06-06 2018-06-25 脚本部署方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810573712.0A CN109032611B (zh) 2018-06-06 2018-06-06 脚本部署方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN109032611A CN109032611A (zh) 2018-12-18
CN109032611B true CN109032611B (zh) 2022-01-28

Family

ID=64612351

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810573712.0A Active CN109032611B (zh) 2018-06-06 2018-06-06 脚本部署方法、装置、计算机设备及存储介质

Country Status (2)

Country Link
CN (1) CN109032611B (zh)
WO (1) WO2019232828A1 (zh)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110047472B (zh) * 2019-03-15 2024-07-02 平安科技(深圳)有限公司 语音信息的批量转换方法、装置、计算机设备及存储介质
CN109977099A (zh) * 2019-03-16 2019-07-05 平安城市建设科技(深圳)有限公司 数据库部署方法、用户设备、存储介质及装置
CN110231935B (zh) * 2019-06-12 2023-06-30 上海达梦数据库有限公司 一种脚本执行和更新的方法、装置、设备和存储介质
CN110673859B (zh) * 2019-08-30 2022-06-17 北京浪潮数据技术有限公司 一种图形数据库部署方法、装置、设备及可读存储介质
CN110750444B (zh) * 2019-09-10 2024-05-10 中国平安财产保险股份有限公司 应用程序移交方法、装置、计算机设备及存储介质
CN110908978B (zh) * 2019-11-06 2022-09-13 中盈优创资讯科技有限公司 数据库数据结构验证方法及装置
CN111045695A (zh) * 2019-12-15 2020-04-21 北京浪潮数据技术有限公司 WebLogic中间件部署装置、方法及设备和介质
CN111258591B (zh) * 2020-01-14 2023-07-25 广州极晟网络技术有限公司 程序部署任务执行方法、装置、计算机设备和存储介质
CN111309343B (zh) * 2020-02-20 2023-02-21 中国建设银行股份有限公司 一种开发部署方法及装置
CN111352843B (zh) * 2020-02-29 2022-11-25 苏州浪潮智能科技有限公司 一种实现测试脚本验证的方法及***
CN111459911B (zh) * 2020-03-30 2022-12-13 上海云砺信息科技有限公司 业务数据的处理方法及设备
CN111506657B (zh) * 2020-04-17 2024-04-26 腾讯科技(深圳)有限公司 一种区块链节点设备部署的方法
CN111722853A (zh) * 2020-06-12 2020-09-29 苏州浪潮智能科技有限公司 一种安装脚本部署的方法和设备
CN113934146A (zh) * 2020-06-29 2022-01-14 阿里巴巴集团控股有限公司 对物联网设备进行控制的方法、装置及电子设备
CN112000349B (zh) * 2020-07-28 2024-02-09 山东浪潮易云在线科技有限公司 一种基于SaaS的数据升级方法、设备及介质
CN112052225B (zh) * 2020-08-27 2024-05-17 中信银行股份有限公司 一种db2数据库静态嵌入式sql绑定优雅部署方法
CN112015465B (zh) * 2020-09-03 2024-05-24 中国平安财产保险股份有限公司 项目工程配置发布方法、装置、计算机设备及存储介质
CN112328379A (zh) * 2020-11-05 2021-02-05 浪潮电子信息产业股份有限公司 一种应用迁移方法、装置、设备及介质
CN112163131A (zh) * 2020-11-10 2021-01-01 平安普惠企业管理有限公司 业务数据查询平台的配置方法、装置、计算机设备及介质
CN112416361A (zh) * 2020-12-03 2021-02-26 平安普惠企业管理有限公司 结构化查询语言脚本审查方法及相关设备
CN112688804B (zh) * 2020-12-18 2023-09-19 中国平安财产保险股份有限公司 业务平台的部署方法、装置、设备及存储介质
CN112597131A (zh) * 2020-12-25 2021-04-02 广州趣丸网络科技有限公司 一种分布式脚本控制方法及相关装置
CN113326248A (zh) * 2021-05-17 2021-08-31 上海中通吉网络技术有限公司 数据库快速搭建方法及装置
CN113190240B (zh) * 2021-05-27 2024-07-12 深圳平安智汇企业信息管理有限公司 基于多环境部署的版本发布方法、装置及计算机设备
CN113204566B (zh) * 2021-06-09 2024-01-26 中国银行股份有限公司 Sql脚本的执行方法及装置
CN113535568B (zh) * 2021-07-22 2023-09-05 工银科技有限公司 应用部署版本的验证方法、装置、设备和介质
CN113568623B (zh) * 2021-07-23 2024-07-09 上海淇玥信息技术有限公司 一种部署应用的方法、装置和电子设备
CN113778468A (zh) * 2021-09-09 2021-12-10 上海中通吉网络技术有限公司 数据库的安装方法
CN114371853B (zh) * 2022-01-10 2022-09-20 柏科数据技术(深圳)股份有限公司 一种分布式***部署方法、装置、终端设备及存储介质
CN114531477B (zh) * 2022-04-22 2022-08-30 深圳丰尚智慧农牧科技有限公司 功能组件的配置方法、装置、计算机设备和存储介质
CN115658978B (zh) * 2022-11-14 2023-04-07 杭州欧若数网科技有限公司 图数据库***多源数据导入方法和装置
CN116893977B (zh) * 2023-09-08 2024-01-16 中国空气动力研究与发展中心计算空气动力研究所 分布式仿真测试环境自动部署方法、装置、设备及介质
CN117369866A (zh) * 2023-09-22 2024-01-09 中科驭数(北京)科技有限公司 参数校验方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105117431A (zh) * 2015-08-07 2015-12-02 北京思特奇信息技术股份有限公司 一种动态配置外部导入数据的方法及***
CN105868204A (zh) * 2015-01-21 2016-08-17 ***(深圳)有限公司 一种转换Oracle脚本语言SQL的方法及装置
CN107092557A (zh) * 2017-03-24 2017-08-25 广东网金控股股份有限公司 一种数据库架构升级脚本验证方法和装置
CN107203400A (zh) * 2017-06-21 2017-09-26 郑州云海信息技术有限公司 一种远程部署组件的方法及装置
US9971595B1 (en) * 2016-01-15 2018-05-15 Jpmorgan Chase Bank, N.A. Techniques for automated database deployment

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9430505B2 (en) * 2011-04-18 2016-08-30 Infosys Limited Automated data warehouse migration
US9588749B2 (en) * 2014-10-14 2017-03-07 Microsoft Technology Licensing, Llc Configuration transform for application deployment
CN105577475B (zh) * 2015-12-28 2019-07-05 上海瀚之友信息技术服务有限公司 自动化性能测试***及方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105868204A (zh) * 2015-01-21 2016-08-17 ***(深圳)有限公司 一种转换Oracle脚本语言SQL的方法及装置
CN105117431A (zh) * 2015-08-07 2015-12-02 北京思特奇信息技术股份有限公司 一种动态配置外部导入数据的方法及***
US9971595B1 (en) * 2016-01-15 2018-05-15 Jpmorgan Chase Bank, N.A. Techniques for automated database deployment
CN107092557A (zh) * 2017-03-24 2017-08-25 广东网金控股股份有限公司 一种数据库架构升级脚本验证方法和装置
CN107203400A (zh) * 2017-06-21 2017-09-26 郑州云海信息技术有限公司 一种远程部署组件的方法及装置

Also Published As

Publication number Publication date
WO2019232828A1 (zh) 2019-12-12
CN109032611A (zh) 2018-12-18

Similar Documents

Publication Publication Date Title
CN109032611B (zh) 脚本部署方法、装置、计算机设备及存储介质
CN108874644B (zh) 数据监控方法、装置、计算机设备及存储介质
CN112256558B (zh) 一种测试用例的生成方法、装置、计算机设备及存储介质
EP2646913B1 (en) Repairing corrupt software
CN110941546A (zh) Web页面用例的自动化测试方法、装置、设备及存储介质
CN106940695B (zh) 数据源信息的校验方法及装置
CN110569035A (zh) 软件开发项目的代码编译方法、装置、设备和存储介质
US11238151B2 (en) Method and apparatus for patching binary having vulnerability
US9047260B2 (en) Model-based testing of a graphical user interface
WO2020186808A1 (zh) 页面权限测试方法、装置、计算机设备及存储介质
CN110704298A (zh) 一种代码验证的方法、装置、终端设备及存储介质
CN112540924A (zh) 接口自动化测试方法、装置、设备及存储介质
EP3514680B1 (en) Identification of changes in functional behavior and runtime behavior of a system during maintenance cycles
CN113505078A (zh) 配置文件更新方法、装置、设备及存储介质
CN109684205B (zh) ***测试方法、装置、电子设备及存储介质
CN112286786A (zh) 数据库的测试方法、装置和服务器
US20220303263A1 (en) Software Deployment Certification
CN115757172A (zh) 测试执行方法、装置、存储介质及计算机设备
CN115185821A (zh) 程序测试中版本标注方法、***、设备及存储介质
CN113626108A (zh) webpack的辅助配置方法、装置、设备和存储介质
CN112363929A (zh) ***上线方法、装置、计算机设备及存储介质
CN114595159B (zh) 测试数据生成方法、装置、设备及存储介质
CN112699023B (zh) 项目接口测试方法、装置、计算机设备及存储介质
CN114416106B (zh) 更新编译计数值的方法、***、电子设备以及存储介质
CN113052463B (zh) 工作流核验方法、装置、计算机设备及存储介质

Legal Events

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