CN113204566B - Sql脚本的执行方法及装置 - Google Patents

Sql脚本的执行方法及装置 Download PDF

Info

Publication number
CN113204566B
CN113204566B CN202110643714.4A CN202110643714A CN113204566B CN 113204566 B CN113204566 B CN 113204566B CN 202110643714 A CN202110643714 A CN 202110643714A CN 113204566 B CN113204566 B CN 113204566B
Authority
CN
China
Prior art keywords
script
sql
sql script
execution
code
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
CN202110643714.4A
Other languages
English (en)
Other versions
CN113204566A (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.)
Bank of China Ltd
Original Assignee
Bank of China 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 Bank of China Ltd filed Critical Bank of China Ltd
Priority to CN202110643714.4A priority Critical patent/CN113204566B/zh
Publication of CN113204566A publication Critical patent/CN113204566A/zh
Application granted granted Critical
Publication of CN113204566B publication Critical patent/CN113204566B/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/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2474Sequence data queries, e.g. querying versioned data
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • G06F9/45512Command shells
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Fuzzy Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种SQL脚本的执行方法及装置,该方法包括:获取包含至少一个数据库的数据库集和配置信息,基于配置信息为每个数据库添加与其对应的各个SQL脚本;基于各个SQL脚本的脚本信息,生成执行序列;依次读取执行序列中的各个脚本编码,将当前读取到的脚本编码作为目标编码,调用与目标编码对应的SQL脚本,生成SQL脚本的回退脚本;判断执行的SQL脚本是否执行出错;若出错,则执行回退脚本,生成出错信息并停止读取执行序列中位于目标编码后的各个脚本编码;基于根据SQL脚本的脚本信息生成的执行序列依次执行各个SQL脚本,由此保证了有序执行脚本,在SQL脚本执行出错时,停止执行后续的SQL脚本,快速定位出错的SQL脚本,提高工作的效率和保证数据库的稳定。

Description

SQL脚本的执行方法及装置
技术领域
本发明涉及数据库技术领域,特别涉及一种SQL脚本的执行方法及装置。
背景技术
数据库是组成各种处理系统必不可少的成分之一,结构化查询语言(StructuredQueryLanguage,SQL)是组成数据库的编程语言之一,其中,SQL是一种数据库查询和程序设计语言,用于存取数据以及查询、更新及管理数据库。
近些年来,随着大数据的发展,数据库的类型变得越来越多,为了确保处理系统上线的稳定性,通常需要对数据库进行部署和维护,而在对数据库进行部署和维护时,通常是执行使用SQL语句编写成的SQL脚本来实现的。
传统执行SQL脚本的方式是使用过程化SQL语言自带的命令模式批量执行SQL脚本,使用这种方式执行多个SQL脚本时,在SQL脚本出错时不能及时停止,使得无法准确的确定执行出错的SQL脚本。
发明内容
有鉴于此,本发明提供一种SQL脚本的执行方法及装置,在批量执行SQL脚本的过程中,SQL脚本执行出错时,执行对应的回退脚本和停止执行后续的SQL脚本,由此可快速的恢复数据库的装置和快速定位出错的SQL脚本。
为实现上述目的,本发明实施例提供如下技术方案:
一种SQL脚本的执行方法,包括:
获取数据库集,所述数据库集中包含至少一个数据库;
获取配置信息,并基于所述配置信息为每个所述数据库添加与其对应的各个SQL脚本;
基于各个所述SQL脚本的脚本信息,生成执行序列,所述执行序列由每个所述SQL脚本的脚本编码按照每个所述SQL脚本的执行等级从高到低排列组成;
依次读取所述执行序列中的各个脚本编码;
将当前读取到的脚本编码作为目标编码,调用与所述目标编码对应的SQL脚本,并生成与所述SQL脚本对应的回退脚本;
执行所述SQL脚本,并判断所述SQL脚本是否执行出错;
若所述SQL脚本执行出错,则执行与所述SQL脚本对应的回退脚本,生成所述SQL脚本的出错信息并停止读取所述执行序列中位于所述目标编码后的各个脚本编码。
上述的方法,可选的,还包括:
若所述SQL脚本执行未出错,则确定所述目标编码在所述执行序列中是否为最后一个脚本编码;
若所述目标编码在所述执行序列中不为最后一个脚本编码,则将下一个读取到的脚本编码作为目标编码,并执行与所述目标编码对应的操作。
上述的方法,可选的,还包括:
若所述目标编码在所述执行序列中为最后一个脚本编码,则生成执行结束信息,并将所述执行结束信息进行展示。
上述的方法,可选的,所述基于各个所述SQL脚本的脚本信息,生成执行序列,包括:
对每个所述SQL脚本的脚本信息进行解析,获取每个所述SQL脚本的数据库等级信息以及排列信息;
基于每个所述SQL脚本的数据库等级信息和排列信息,为每个所述SQL脚本设置执行等级;
获取每个所述SQL脚本的脚本编码;
按照执行等级从高到低的顺序,将各个所述SQL脚本的脚本编码进行排序,得到执行序列。
上述的方法,可选的,所述生成与所述SQL脚本对应的回退脚本,包括:
判断所述SQL脚本中是否存在变更操作;
若所述SQL脚本中未存在变更操作,则将预设的恢复脚本确定为所述SQL脚本的回退脚本;
若所述SQL脚本中存在变更操作,则获取所述SQL脚本的变更标识;
基于所述SQL脚本的变更标识,判断所述SQL脚本的变更操作的操作类型是否为增加类型;
若所述SQL脚本的变更操作的操作类型为增加类型,则基于所述SQL脚本中与所述增加类型对应的脚本数据生成删除脚本,并将所述删除脚本作为所述SQL脚本的回退脚本;
若所述SQL脚本的变更操作的操作类型不为增加类型,则确定所述SQL脚本的变更操作的操作类型为删改类型,并对所述SQL脚本中与所述删改类型对应的脚本数据进行备份,得到备份脚本,并将所述备份脚本作为所述SQL脚本的回退脚本。
一种SQL脚本的执行装置,包括:
第一获取单元,用于获取数据库集,所述数据库集中包含至少一个数据库;
第二获取单元,用于获取配置信息,并基于所述配置信息为每个所述数据库添加与其对应的各个SQL脚本;
第一生成单元,用于基于各个所述SQL脚本的脚本信息,生成执行序列,所述执行序列由每个所述SQL脚本的脚本编码按照每个所述SQL脚本的执行等级从高到低排列组成;
读取单元,用于依次读取所述执行序列中的各个脚本编码;
调用单元,用于将当前读取到的脚本编码作为目标编码,调用与所述目标编码对应的SQL脚本,并生成与所述SQL脚本对应的回退脚本;
第一执行单元,用于执行所述SQL脚本,并判断所述SQL脚本是否执行出错;
停止单元,用于若所述SQL脚本执行出错,则执行与所述SQL脚本对应的回退脚本,生成所述SQL脚本的出错信息并停止读取所述执行序列中位于所述目标编码后的各个脚本编码。
上述的装置,可选的,还包括:
确定单元,用于若所述SQL脚本执行未出错,则确定所述目标编码在所述执行序列中是否为最后一个脚本编码;
第二执行单元,用于若所述目标编码在所述执行序列中不为最后一个脚本编码,则将下一个读取到的脚本编码作为目标编码,并执行与所述目标编码对应的操作。
上述的装置,可选的,还包括:
第二生成单元,用于若所述目标编码在所述执行序列中为最后一个脚本编码,则生成执行结束信息,并将所述执行结束信息进行展示。
上述的装置,可选的,所述第一生成单元,包括:
解析子单元,用于对每个所述SQL脚本的脚本信息进行解析,获取每个所述SQL脚本的数据库等级信息以及排列信息;
设置子单元,用于基于每个所述SQL脚本的数据库等级信息和排列信息,为每个所述SQL脚本设置执行等级;
第一获取子单元,用于获取每个所述SQL脚本的脚本编码;
排序子单元,用于按照执行等级从高到低的顺序,将各个所述SQL脚本的脚本编码进行排序,得到执行序列。
上述的装置,可选的,所述调用单元,包括:
第一判断子单元,用于判断所述SQL脚本中是否存在变更操作;
确定子单元,用于若所述SQL脚本中未存在变更操作,则将预设的恢复脚本确定为所述SQL脚本的回退脚本;
第二获取子单元,用于若所述SQL脚本中存在变更操作,则获取所述SQL脚本的变更标识;
第二判断子单元,用于基于所述SQL脚本的变更标识,判断所述SQL脚本的变更操作的操作类型是否为增加类型;
生成子单元,用于若所述SQL脚本的变更操作的操作类型为增加类型,则基于所述SQL脚本中与所述增加类型对应的脚本数据生成删除脚本,并将所述删除脚本作为所述SQL脚本的回退脚本;
备份子单元,用于若所述SQL脚本的变更操作的操作类型不为增加类型,则确定所述SQL脚本的变更操作的操作类型为删改类型,并对所述SQL脚本中与所述删改类型对应的脚本数据进行备份,得到备份脚本,并将所述备份脚本作为所述SQL脚本的回退脚本。
与现有技术相比,本发明具有以下优点:
本发明提供一种SQL脚本的执行方法及装置,该方法包括:获取数据库集,数据库集中包含至少一个数据库;获取配置信息,并基于所述配置信息为每个数据库添加与其对应的各个SQL脚本;基于各个SQL脚本的脚本信息,生成执行序列,所述执行序列由每个SQL脚本的脚本编码按照每个SQL脚本的执行等级从高到低排列组成;依次读取执行序列中的各个脚本编码,将当前读取到的脚本编码作为目标编码,调用与目标编码对应的SQL脚本,生成SQL脚本的回退脚本;执行SQL脚本,并判断SQL脚本是否执行出错;若SQL脚本执行出错,则执行与SQL脚本对应的回退脚本,生成SQL脚本的出错信息并停止读取执行序列中位于目标编码后的各个脚本编码;根据每个SQL脚本的脚本信息生成执行序列,基于执行序列依次执行各个SQL脚本,由此保证了批量的SQL脚本的有序执行,并在SQL脚本执行出错时,执行对应的回退脚本以及及时停止执行后续的SQL脚本,使得数据库恢复至执行SQL脚本前的状态,快速定位出错的SQL脚本,提高工作的效率和保证数据库的稳定。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种SQL脚本的执行方法的方法流程图;
图2为本发明实施例提供的一种SQL脚本的执行方法的另一方法流程图;
图3为本发明实施例提供的一种SQL脚本的执行方法的又一方法流程图;
图4为本发明实施例提供的一种SQL脚本的执行装置的结构示意图;
图5为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明可用于由各种计算机终端或计算装置组成的系统中,该系统为需要部署数据库的系统,本发明的执行主体可为系统中的服务器或处理器,为了解决传统执行数量较多的SQL脚本出错时,难以定位出错脚本的问题,本发明提供了一种SQL脚本的执行方法,在SQL脚本执行出错时,及时停止,可准确的确定出错的SQL脚本。
参照图1,为本发明实施例提供的其中一种SQL脚本的执行方法的方法流程图,具体说明如下所述:
S101、获取数据库集,所述数据库集中包含至少一个数据库。
本发明实施例提供的方法中,数据库集中包含的各个数据库为维护人员为系统配置的数据库,其中,维护人员可通过操作界面选择数据库,基于维护人员选择的各个数据库的信息生成数据库选择信息,基于数据库选择信息,获取数据库集,所述数据库集中包含维护所选择的各个数据库。
在获取数据库集时还获取到与该数据库集对应的数据库连接信息,数据库连接信息由每个数据库的连接信息组成,连接信息中包含但不限于数据库的各个数据接口的连接信息、数据格式信息以及功能信息。
S102、获取配置信息,并基于所述配置信息为每个所述数据库添加与其对应的各个SQL脚本。
维护人员基于每个数据库的安装手册中的各个执行码,在操作界面为每个数据库选择SQL脚本,进一步的,维护人员还可以在操作界面为每个数据库选择的SQL脚本更改脚本名称以及改变SQL脚本的排列顺序,其中,安装手册中的执行码可为SQL脚本的唯一脚本识别码,为数据库所选择的SQL脚本的数量与执行码的数量相同。
维护人员为每个数据库选择SQL脚本后,可生成与每个数据库对应的脚本选择信息,基于各个脚本选择信息生成配置信息;其中,脚本选择信息中可由维修人员选择的各个SQL脚本的信息、对SQL脚本的脚本名称进行更改后的信息以及改变SQL脚本的排列顺序后的信息组成。
根据配置信息中的每个数据库的脚本选择信息,在SQL脚本文件夹中确定每个脚本选择信息的各个SQL脚本,并将每个脚本选择信息的各个SQL脚本添加至与该脚本选择信息对应的数据库中。
S103、基于各个所述SQL脚本的脚本信息,生成执行序列,所述执行序列由每个所述SQL脚本的脚本编码按照每个所述SQL脚本的执行等级从高到低排列组成。
SQL脚本的脚本信息中包含SQL脚本所属的数据库的库信息、SQL脚本在其所属的数据库中的排列信息;SQL脚本的脚本编码可为SQL脚本的脚本识别码。
参照图2,为生成执行序列的方法流程图,具体说明如下所述:
S201、对每个所述SQL脚本的脚本信息进行解析,获取每个所述SQL脚本的数据库等级信息以及排列信息。
数据库等级信息为SQL脚本所属的数据库的等级信息,通过每个SQL脚本的数据库等级信息可得知每个SQL脚本所属的数据库的等级;排列信息为SQL脚本在其所属的数据库中排列的位置信息。
S202、基于每个所述SQL脚本的数据库等级信息和排列信息,为每个所述SQL脚本设置执行等级。
根据每个SQL脚本的数据库等级信息和排列信息,可确定每个SQL脚本的执行顺序,由此可为每个SQL脚本设置执行等级;优选的,在为每个SQL脚本设置执行等级时,可以以数字的形式表示执行等级,数字越大,执行等级越低。
进一步的,在设置SQL脚本的执行等级时,SQL脚本所属的数据库的等级越高,为SQL脚本的执行等级就越高;而属于同一数据库的各个SQL脚本,SQL脚本在数据库中排列的位置越靠前,该SQL脚本的执行等级就越高。
S203、获取每个所述SQL脚本的脚本编码。
在为每个SQL脚本的脚本编码设置执行等级后,获取每个SQL脚本的脚本编码,其中,脚本编码可为SQL脚本的识别编码或是身份标识码。
S204、按照执行等级从高到低的顺序,将各个所述SQL脚本的脚本编码进行排序,得到执行序列。
基于为每个SQL脚本设置的执行等级,按照执行等级从高到低的顺序,将各个SQL脚本的脚本编码进行排序,从而得到执行序列。
本发明基于SQL脚本的数据库等级信息和排列信息,为每个SQL脚本设置执行等级,由此可明确每个SQL脚本的执行顺序,基于各个SQL脚本的脚本编码和执行等级,生成执行序列,可基于该执行序列中的各个脚本编码,依次调用各个SQL脚本,由此可有序的执行各个SQL脚本,提高执行SQL脚本的效率。
S104、依次读取所述执行序列中的各个脚本编码。
S105、将当前读取到的脚本编码作为目标编码,调用与所述目标编码对应的SQL脚本,并生成与所述SQL脚本对应的回退脚本。
在依次读取执行序列中的各个脚本编码时,将当前读取到的脚本编码作为目标编码,为所述SQL脚本生成对应的回退脚本,其中,所述回退脚本为用于将数据库恢复至执行与该回退脚本对应的SQL脚本前的状态的脚本,生成回退脚本的具体流程可参照图3,具体说明如下所述:
S301、判断所述SQL脚本中是否存在变更操作;若所述SQL脚本中未存在变更操作,则执行S302;若所述SQL脚本中存在变更操作,则执行S303。
对SQL脚本进行扫描,以判断SQL脚本中是否存在变更操作,其中,判断SQL脚本中是否存在变更操作的依据可根据SQL脚本中是否存在变更标识进行确定,在SQL脚本中存在变更标识时,则确定SQL脚本中存在变更操作;若SQL脚本中不存在变更标识时,则确定SQL脚本中不存在变更操作。变更操作为改变数据库中某项属性数据的操作,例如删除数据、增加数据以及修改属性参数等。
S302、将预设的恢复脚本确定为所述SQL脚本的回退脚本。
执行恢复脚本可使数据库恢复至执行该SQL脚本前的状态。
S303、获取所述SQL脚本的变更标识。
变更标识用于表示SQL脚本中存在变更操作。
S304、基于所述SQL脚本的变更标识,判断所述SQL脚本的变更操作的操作类型是否为增加类型;若所述SQL脚本的变更操作的操作类型为增加类型,则执行S305;若所述SQL脚本的变更操作的操作类型不为增加类型,则执行S306。
变更标识有多种类型,若变更标识为增加标识,则表示SQL脚本的变更操作的操作类型为增加类型;若变更类型为删改标识,则表示SQL脚本的变更操作的操作类型为删改类型。
S305、基于所述SQL脚本中与所述增加类型对应的脚本数据生成删除脚本,并将所述删除脚本作为所述SQL脚本的回退脚本。
本发明中的与增加类型对应的脚本数据为该SQL脚本相对于上一个SQL脚本所新增的数据,即,根据新增的数据生成删除脚本,以便于在执行该删除脚本时删除多余的数据,由此可使数据库恢复至执行该SQL脚本前的状态。
S306、确定所述SQL脚本的变更操作的操作类型为删改类型,并对所述SQL脚本中与所述删改类型对应的脚本数据进行备份,得到备份脚本,并将所述备份脚本作为所述SQL脚本的回退脚本。
本发明中的变更操作的操作类型为删改类型时,会涉及到数据库中的表/存储过程/触发器的数据的删除或修改;与删改类型对应的脚本数据为SQL脚本中包含的数据库未进行删除或修改的数据,该数据具体为数据库的表/存储过程/触发器的数据;将该数据进行备份,得到备份脚本;在执行该备份脚本后,可将数据库中的数据恢复至执行该SQL脚本前的状态。
本发明实施例提供的方法中,对SQL脚本进行判断,为不同类型的SQL脚本设置不同的回退脚本,以便SQL脚本执行出错后,执行与其对应的回退脚本,使得数据库回退至执行该SQL脚本前的状态,可快速的恢复数据库的状态,实现为数据库的维护,保证数据库的稳定性。
S106、执行所述SQL脚本,并判断所述SQL脚本是否执行出错;若所述SQL脚本执行出错,则执行S107;若所述SQL脚本执行未出错,则执行S108。
调用SQL脚本后,执行SQL脚本,以便对数据库进行维护;在判断SQL脚本是否执行出错时,可根据SQL脚本执行完毕后反馈的结束指令进行判断,若所述结束指令中包含出错标识,则确定SQL脚本执行出错;若所述结束指令中未包含出错标识,则确定SQL脚本执行未出错。
S107、执行所述回退脚本,生成所述SQL脚本的出错信息并停止读取所述执行序列中位于所述目标编码后的各个脚本编码。
SQL脚本执行出错后,执行回退脚本,使得SQL脚本所属的数据库可恢复至执行SQL脚本前的状态,由此可保证数据库中数据的正确性。
基于SQL脚本的脚本信息,生成SQL脚本的出错信息并停止读取执行序列中位于目标编码后的各个脚本编码,由此停止执行其他的SQL脚本,可快速的定位出出错的SQL脚本,并及时的进行报错,解决了传统方法中出错不停止、难以确定出错的SQL脚本的问题。
S108、确定所述目标编码在所述执行序列中是否为最后一个脚本编码;若所述目标编码在所述执行序列中不为最后一个脚本编码,则执行S105;若所述目标编码在所述执行序列中为最后一个脚本编码,则执行S109。
在确定目标编码在执行序列中不为最后一个脚本编码时,将下一个读取到的脚本编码作为目标编码,并执行与所述目标编码对应的操作,即返回执行S105。
S109、生成执行结束信息,并将所述执行结束信息进行展示。
当目标编码在执行序列中为最后一个脚本编码时,生成执行结束信息,并将执行结束信息向维护人员展示,以便告知维护人员与数据库集对应的各个SQL脚本均已执行完毕,以完成对系统中各个数据库的维护。
本发明实施例提供的方法中,获取数据库集,数据库集中包含至少一个数据库;获取配置信息,并基于所述配置信息为每个数据库添加与其对应的各个SQL脚本;基于各个SQL脚本的脚本信息,生成执行序列,所述执行序列由每个SQL脚本的脚本编码按照每个SQL脚本的执行等级从高到低排列组成;依次读取执行序列中的各个脚本编码,将当前读取到的脚本编码作为目标编码,调用与目标编码对应的SQL脚本,生成SQL脚本的回退脚本;执行SQL脚本,并判断SQL脚本是否执行出错;若SQL脚本执行出错,则执行与SQL脚本对应的回退脚本,生成SQL脚本的出错信息并停止读取执行序列中位于目标编码后的各个脚本编码;根据每个SQL脚本的脚本信息生成执行序列,基于执行序列依次执行各个SQL脚本,由此保证了批量的SQL脚本的有序执行,并在SQL脚本执行出错时,执行对应的回退脚本以及及时停止执行后续的SQL脚本,使得数据库恢复至执行SQL脚本前的状态,快速定位执行大量的SQL脚本时出错的SQL脚本,提高工作的效率和保证数据库的稳定。
与图1所示的方法相对应的,本发明还提供一种SQL脚本的执行装置,该装置用于支持上述的方法的具体实现,本发明提供的SQL脚本的执行装置可以应用于计算机终端或各种移动设备中,其结构示意图如图4所示,具体包括:
第一获取单元401,用于获取数据库集,所述数据库集中包含至少一个数据库;
第二获取单元402,用于获取配置信息,并基于所述配置信息为每个所述数据库添加与其对应的各个SQL脚本;
第一生成单元403,用于基于各个所述SQL脚本的脚本信息,生成执行序列,所述执行序列由每个所述SQL脚本的脚本编码按照每个所述SQL脚本的执行等级从高到低排列组成;
读取单元404,用于依次读取所述执行序列中的各个脚本编码;
调用单元405,用于将当前读取到的脚本编码作为目标编码,调用与所述目标编码对应的SQL脚本,并生成与所述SQL脚本对应的回退脚本;
第一执行单元406,用于执行所述SQL脚本,并判断所述SQL脚本是否执行出错;
停止单元407,用于若所述SQL脚本执行出错,则执行与所述SQL脚本对应的回退脚本,生成所述SQL脚本的出错信息并停止读取所述执行序列中位于所述目标编码后的各个脚本编码。
本发明实施例提供的装置中,获取数据库集,数据库集中包含至少一个数据库;获取配置信息,并基于所述配置信息为每个数据库添加与其对应的各个SQL脚本;基于各个SQL脚本的脚本信息,生成执行序列,所述执行序列由每个SQL脚本的脚本编码按照每个SQL脚本的执行等级从高到低排列组成;依次读取执行序列中的各个脚本编码,将当前读取到的脚本编码作为目标编码,调用与目标编码对应的SQL脚本,生成SQL脚本的回退脚本;执行SQL脚本,并判断SQL脚本是否执行出错;若SQL脚本执行出错,则执行与SQL脚本对应的回退脚本,生成SQL脚本的出错信息并停止读取执行序列中位于目标编码后的各个脚本编码;根据每个SQL脚本的脚本信息生成执行序列,基于执行序列依次执行各个SQL脚本,由此保证了SQL脚本的有序执行,并在SQL脚本执行出错时,执行对应的回退脚本以及停止执行后续的SQL脚本,使得数据库恢复至执行SQL脚本前的状态,快速定位出错的SQL脚本,提高工作的效率和保证数据库的稳定。
本发明实施提供的装置中,还可以配置为:
确定单元,用于若所述SQL脚本执行未出错,则确定所述目标编码在所述执行序列中是否为最后一个脚本编码;
第二执行单元,用于若所述目标编码在所述执行序列中不为最后一个脚本编码,则将下一个读取到的脚本编码作为目标编码,并执行与所述目标编码对应的操作。
本发明实施提供的装置中,还可以配置为:
第二生成单元,用于若所述目标编码在所述执行序列中为最后一个脚本编码,则生成执行结束信息,并将所述执行结束信息进行展示。
本发明实施提供的装置中,所述第一生成单元403,可以配置为:
解析子单元,用于对每个所述SQL脚本的脚本信息进行解析,获取每个所述SQL脚本的数据库等级信息以及排列信息;
设置子单元,用于基于每个所述SQL脚本的数据库等级信息和排列信息,为每个所述SQL脚本设置执行等级;
第一获取子单元,用于获取每个所述SQL脚本的脚本编码;
排序子单元,用于按照执行等级从高到低的顺序,将各个所述SQL脚本的脚本编码进行排序,得到执行序列。
本发明实施提供的装置中,所述调用单元405,可以配置为:
第一判断子单元,用于判断所述SQL脚本中是否存在变更操作;
确定子单元,用于若所述SQL脚本中未存在变更操作,则将预设的恢复脚本确定为所述SQL脚本的回退脚本;
第二获取子单元,用于若所述SQL脚本中存在变更操作,则获取所述SQL脚本的变更标识;
第二判断子单元,用于基于所述SQL脚本的变更标识,判断所述SQL脚本的变更操作的操作类型是否为增加类型;
生成子单元,用于若所述SQL脚本的变更操作的操作类型为增加类型,则基于所述SQL脚本中与所述增加类型对应的脚本数据生成删除脚本,并将所述删除脚本作为所述SQL脚本的回退脚本;
备份子单元,用于若所述SQL脚本的变更操作的操作类型不为增加类型,则确定所述SQL脚本的变更操作的操作类型为删改类型,并对所述SQL脚本中与所述删改类型对应的脚本数据进行备份,得到备份脚本,并将所述备份脚本作为所述SQL脚本的回退脚本。
本发明实施例还提供了一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行上述SQL脚本的执行方法。
本发明实施例还提供了一种电子设备,其结构示意图如图5所示,具体包括存储器501,以及一个或者一个以上的指令502,其中一个或者一个以上指令502存储于存储器501中,且经配置以由一个或者一个以上处理器503执行所述一个或者一个以上指令502进行以下操作:
获取数据库集,所述数据库集中包含至少一个数据库;
获取配置信息,并基于所述配置信息为每个所述数据库添加与其对应的各个SQL脚本;
基于各个所述SQL脚本的脚本信息,生成执行序列,所述执行序列由每个所述SQL脚本的脚本编码按照每个所述SQL脚本的执行等级从高到低排列组成;
依次读取所述执行序列中的各个脚本编码;
将当前读取到的脚本编码作为目标编码,调用与所述目标编码对应的SQL脚本,并生成与所述SQL脚本对应的回退脚本;
执行所述SQL脚本,并判断所述SQL脚本是否执行出错;
若所述SQL脚本执行出错,则执行与所述SQL脚本对应的回退脚本,生成所述SQL脚本的出错信息并停止读取所述执行序列中位于所述目标编码后的各个脚本编码。
上述各个实施例的具体实施过程及其衍生方式,均在本发明的保护范围之内。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (8)

1.一种SQL脚本的执行方法,其特征在于,包括:
获取数据库集,所述数据库集中包含至少一个数据库;
获取配置信息,并基于所述配置信息为每个所述数据库添加与其对应的各个SQL脚本;
基于各个所述SQL脚本的脚本信息,生成执行序列,所述执行序列由每个所述SQL脚本的脚本编码按照每个所述SQL脚本的执行等级从高到低排列组成;
依次读取所述执行序列中的各个脚本编码;
将当前读取到的脚本编码作为目标编码,调用与所述目标编码对应的SQL脚本,并生成与所述SQL脚本对应的回退脚本;
执行所述SQL脚本,并判断所述SQL脚本是否执行出错;
若所述SQL脚本执行出错,则执行与所述SQL脚本对应的回退脚本,生成所述SQL脚本的出错信息并停止读取所述执行序列中位于所述目标编码后的各个脚本编码;
其中,所述生成与所述SQL脚本对应的回退脚本,包括:
判断所述SQL脚本中是否存在变更操作;
若所述SQL脚本中未存在变更操作,则将预设的恢复脚本确定为所述SQL脚本的回退脚本;
若所述SQL脚本中存在变更操作,则获取所述SQL脚本的变更标识;
基于所述SQL脚本的变更标识,判断所述SQL脚本的变更操作的操作类型是否为增加类型;
若所述SQL脚本的变更操作的操作类型为增加类型,则基于所述SQL脚本中与所述增加类型对应的脚本数据生成删除脚本,并将所述删除脚本作为所述SQL脚本的回退脚本;
若所述SQL脚本的变更操作的操作类型不为增加类型,则确定所述SQL脚本的变更操作的操作类型为删改类型,并对所述SQL脚本中与所述删改类型对应的脚本数据进行备份,得到备份脚本,并将所述备份脚本作为所述SQL脚本的回退脚本。
2.根据权利要求1所述的方法,其特征在于,还包括:
若所述SQL脚本执行未出错,则确定所述目标编码在所述执行序列中是否为最后一个脚本编码;
若所述目标编码在所述执行序列中不为最后一个脚本编码,则将下一个读取到的脚本编码作为目标编码,并执行与所述目标编码对应的操作。
3.根据权利要求2所述的方法,其特征在于,还包括:
若所述目标编码在所述执行序列中为最后一个脚本编码,则生成执行结束信息,并将所述执行结束信息进行展示。
4.根据权利要求1所述的方法,其特征在于,所述基于各个所述SQL脚本的脚本信息,生成执行序列,包括:
对每个所述SQL脚本的脚本信息进行解析,获取每个所述SQL脚本的数据库等级信息以及排列信息;
基于每个所述SQL脚本的数据库等级信息和排列信息,为每个所述SQL脚本设置执行等级;
获取每个所述SQL脚本的脚本编码;
按照执行等级从高到低的顺序,将各个所述SQL脚本的脚本编码进行排序,得到执行序列。
5.一种SQL脚本的执行装置,其特征在于,包括:
第一获取单元,用于获取数据库集,所述数据库集中包含至少一个数据库;
第二获取单元,用于获取配置信息,并基于所述配置信息为每个所述数据库添加与其对应的各个SQL脚本;
第一生成单元,用于基于各个所述SQL脚本的脚本信息,生成执行序列,所述执行序列由每个所述SQL脚本的脚本编码按照每个所述SQL脚本的执行等级从高到低排列组成;
读取单元,用于依次读取所述执行序列中的各个脚本编码;
调用单元,用于将当前读取到的脚本编码作为目标编码,调用与所述目标编码对应的SQL脚本,并生成与所述SQL脚本对应的回退脚本;
第一执行单元,用于执行所述SQL脚本,并判断所述SQL脚本是否执行出错;
停止单元,用于若所述SQL脚本执行出错,则执行与所述SQL脚本对应的回退脚本,生成所述SQL脚本的出错信息并停止读取所述执行序列中位于所述目标编码后的各个脚本编码;
其中,所述调用单元,包括:
第一判断子单元,用于判断所述SQL脚本中是否存在变更操作;
确定子单元,用于若所述SQL脚本中未存在变更操作,则将预设的恢复脚本确定为所述SQL脚本的回退脚本;
第二获取子单元,用于若所述SQL脚本中存在变更操作,则获取所述SQL脚本的变更标识;
第二判断子单元,用于基于所述SQL脚本的变更标识,判断所述SQL脚本的变更操作的操作类型是否为增加类型;
生成子单元,用于若所述SQL脚本的变更操作的操作类型为增加类型,则基于所述SQL脚本中与所述增加类型对应的脚本数据生成删除脚本,并将所述删除脚本作为所述SQL脚本的回退脚本;
备份子单元,用于若所述SQL脚本的变更操作的操作类型不为增加类型,则确定所述SQL脚本的变更操作的操作类型为删改类型,并对所述SQL脚本中与所述删改类型对应的脚本数据进行备份,得到备份脚本,并将所述备份脚本作为所述SQL脚本的回退脚本。
6.根据权利要求5所述的装置,其特征在于,还包括:
确定单元,用于若所述SQL脚本执行未出错,则确定所述目标编码在所述执行序列中是否为最后一个脚本编码;
第二执行单元,用于若所述目标编码在所述执行序列中不为最后一个脚本编码,则将下一个读取到的脚本编码作为目标编码,并执行与所述目标编码对应的操作。
7.根据权利要求6所述的装置,其特征在于,还包括:
第二生成单元,用于若所述目标编码在所述执行序列中为最后一个脚本编码,则生成执行结束信息,并将所述执行结束信息进行展示。
8.根据权利要求5所述的装置,其特征在于,所述第一生成单元,包括:
解析子单元,用于对每个所述SQL脚本的脚本信息进行解析,获取每个所述SQL脚本的数据库等级信息以及排列信息;
设置子单元,用于基于每个所述SQL脚本的数据库等级信息和排列信息,为每个所述SQL脚本设置执行等级;
第一获取子单元,用于获取每个所述SQL脚本的脚本编码;
排序子单元,用于按照执行等级从高到低的顺序,将各个所述SQL脚本的脚本编码进行排序,得到执行序列。
CN202110643714.4A 2021-06-09 2021-06-09 Sql脚本的执行方法及装置 Active CN113204566B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110643714.4A CN113204566B (zh) 2021-06-09 2021-06-09 Sql脚本的执行方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110643714.4A CN113204566B (zh) 2021-06-09 2021-06-09 Sql脚本的执行方法及装置

Publications (2)

Publication Number Publication Date
CN113204566A CN113204566A (zh) 2021-08-03
CN113204566B true CN113204566B (zh) 2024-01-26

Family

ID=77024330

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110643714.4A Active CN113204566B (zh) 2021-06-09 2021-06-09 Sql脚本的执行方法及装置

Country Status (1)

Country Link
CN (1) CN113204566B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019232828A1 (zh) * 2018-06-06 2019-12-12 平安科技(深圳)有限公司 脚本部署方法、装置、计算机设备及存储介质
CN111382198A (zh) * 2018-12-28 2020-07-07 中国移动通信集团山西有限公司 数据还原方法、装置、设备及存储介质
CN111611009A (zh) * 2020-05-26 2020-09-01 深圳壹账通智能科技有限公司 数据库脚本管理方法、装置、计算机设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012094022A1 (en) * 2011-01-09 2012-07-12 Hewlett-Packard Development Company, L.P. Computer network node discovery sequencing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019232828A1 (zh) * 2018-06-06 2019-12-12 平安科技(深圳)有限公司 脚本部署方法、装置、计算机设备及存储介质
CN111382198A (zh) * 2018-12-28 2020-07-07 中国移动通信集团山西有限公司 数据还原方法、装置、设备及存储介质
CN111611009A (zh) * 2020-05-26 2020-09-01 深圳壹账通智能科技有限公司 数据库脚本管理方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN113204566A (zh) 2021-08-03

Similar Documents

Publication Publication Date Title
CN110321254B (zh) 软件版本回滚方法、装置、服务器及存储介质
US8010962B2 (en) Infrastructure for the automation of the assembly of schema maintenance scripts
CN106951369B (zh) 一种联调测试的管理方法及装置
JPH05108317A (ja) ネツトワークシステム及びそのソフトウエア管理方法
CN108776643B (zh) 一种基于版本控制流程的目标代码合并控制方法及系统
CN105988798B (zh) 补丁处理方法及装置
CN113448862B (zh) 软件版本测试方法、装置及计算机设备
CN110673936A (zh) 编排业务的断点续作方法、装置、存储介质及电子设备
CN115357515B (zh) 一种多核系统的调试方法、装置、计算机设备及存储介质
CN111694612A (zh) 配置检查方法、装置、计算机系统及存储介质
CN111078274A (zh) 一种代码开发方法、装置、电子设备和计算机存储介质
CN112307145A (zh) 一种历史地图数据的批量更新方法及装置、介质、设备
CN106603289B (zh) 一种lmt配置文件平滑升级方法
CN105868047A (zh) 数据分区的修复方法、装置及终端
CN109710596B (zh) 数据清理方法、装置、设备及计算机可读存储介质
US20130263143A1 (en) Information processing method and system
CN113204566B (zh) Sql脚本的执行方法及装置
CN104111862A (zh) 云计算平台中获取虚拟机ip地址方法与系统
CN112328602A (zh) 一种数据写入Kafka的方法、装置及设备
CN111400128A (zh) 日志管理方法、装置、计算机设备及存储介质
CN112835779A (zh) 测试用例确定方法、装置、计算机设备
CN113792026B (zh) 数据库脚本的部署方法、装置及计算机可读存储介质
CN112346994B (zh) 一种测试信息关联方法、装置、计算机设备及存储介质
CN110879871B (zh) 页面菜单的配置方法及装置
CN112765041A (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