CN114090014A - 程序拆分方法、装置、设备及计算机存储介质 - Google Patents
程序拆分方法、装置、设备及计算机存储介质 Download PDFInfo
- Publication number
- CN114090014A CN114090014A CN202111406731.2A CN202111406731A CN114090014A CN 114090014 A CN114090014 A CN 114090014A CN 202111406731 A CN202111406731 A CN 202111406731A CN 114090014 A CN114090014 A CN 114090014A
- Authority
- CN
- China
- Prior art keywords
- program
- block
- blocks
- batch processing
- target
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种程序拆分方法、装置、设备及计算机存储介质。该程序拆分方法包括从程序集合中获取与每个数据表分别对应的批处理程序;针对每个数据表分别对应的批处理程序,按照预设分块规则对批处理程序进行分块处理,得到与批处理程序对应的多个程序块;根据不同程序块使用的属性之间的依赖关系,确定与目标属性关联的目标程序块;删除多个程序块中除目标程序块之外的其他程序块,并删除目标程序块中与目标属性无关的其他属性对应的处理代码,得到经删除处理后的程序块;根据经删除处理后的程序块,生成相应的子处理程序,进而得到程序集合中与目标属性对应的程序子集。根据本申请实施例,可以提高程序拆分效率,降低出错概率。
Description
技术领域
本申请属于计算机技术领域,尤其涉及一种程序拆分方法、装置、设备及计算机存储介质。
背景技术
在一些业务场景下,经常会需要对某个计算集合的指标进行抽取,例如,从某个数据表中的100个属性指标中抽取其中80个属性。相应地,在抽取属性的同时,还需要对该100个属性对应的批处理程序全集进行拆分,得到该80个属性对应的批处理程序子集。
现有技术中,主要通过人工方式从全集中删除非子集部分代码,逐一对每个属性涉及的批处理程序进行判断修改,这样,导致程序拆分效率低下,且容易出错,可能会存在无效未引用的代码。
发明内容
本申请实施例提供一种程序拆分方法、装置、设备及计算机存储介质,能够提高程序拆分效率,降低出错概率。
第一方面,本申请实施例提供一种程序拆分方法,该方法包括:
获取与待拆分的程序集合关联的多个数据表;其中,所述程序集合中对应使用多个属性,所述多个属性中包括待抽取的至少一个目标属性;
从所述程序集合中获取与每个数据表分别对应的批处理程序;
针对每个数据表分别对应的批处理程序,按照预设分块规则对所述批处理程序进行分块处理,得到与所述批处理程序对应的多个程序块;
根据不同程序块使用的属性之间的依赖关系,确定与所述目标属性关联的目标程序块;
删除所述多个程序块中除所述目标程序块之外的其他程序块,并删除所述目标程序块中与所述目标属性无关的其他属性对应的处理代码,得到经删除处理后的程序块;
根据经删除处理后的程序块,生成与所述批处理程序对应的子处理程序;
基于与每个批处理程序分别对应的子处理程序,得到所述程序集合中与所述目标属性对应的程序子集。
在一些实施方式中,在针对每个数据表分别对应的批处理程序,按照预设分块规则对所述批处理程序进行分块处理,得到与所述批处理程序对应的多个程序块之后,所述方法还包括:
根据所述多个程序块在所述批处理程序中的位置顺序,依次对所述多个程序块进行编号处理;
所述根据经删除处理后的程序块,生成与所述批处理程序对应的子处理程序,包括:
根据经删除处理后的程序块对应的编号大小,确定程序块排列顺序;
按照所述程序块排列顺序对经删除处理后的程序块进行拼接处理,生成与所述批处理程序对应的子处理程序。
在一些实施方式中,在根据不同程序块使用的属性之间的依赖关系,确定与所述目标属性关联的目标程序块之前,所述方法还包括:
针对所述多个程序块中的每个程序块,分别执行如下步骤,得到每个程序块分别使用的属性,以及不同程序块使用的属性之间的依赖关系:
识别所述程序块对应的块类型;
根据所述块类型,确定所述程序块对应的解析处理方式;
按照所述解析处理方式,对所述程序块进行解析处理。
在一些实施方式中,所述针对所述多个程序块中的每个程序块,分别执行如下步骤,得到每个程序块分别使用的属性,以及不同程序块使用的属性之间的依赖关系,包括:
基于所述多个程序块在所述批处理程序中的位置顺序,倒序遍历每个程序块,以针对所述多个程序块中的每个程序块,分别执行如下步骤,得到每个程序块分别使用的属性,以及不同程序块使用的属性之间的依赖关系。
在一些实施方式中,所述按照预设分块规则对所述批处理程序进行分块处理,得到与所述批处理程序对应的多个程序块,包括:
识别所述批处理程序中包含的多个标识符;
以所述标识符为分割点,对所述批处理程序进行分块处理,得到与所述批处理程序对应的多个程序块。
在一些实施方式中,在获取与待拆分的程序集合关联的多个数据表之前,所述方法还包括:
接收用户对所述多个属性中至少一个目标属性的选择输入;
响应于所述选择输入,获取与所述多个属性对应的批处理程序集合,作为所述待拆分的程序集合,并确定所述至少一个目标属性。
在一些实施方式中,所述目标程序块包括使用所述目标属性的第一程序块,以及使用所述目标属性所依赖的其他属性的第二程序块。
第二方面,本申请实施例提供了一种程序拆分装置,该装置包括:
数据表获取模块,用于获取与待拆分的程序集合关联的多个数据表;其中,所述程序集合中对应使用多个属性,所述多个属性中包括待抽取的至少一个目标属性;
程序获取模块,用于从所述程序集合中获取与每个数据表分别对应的批处理程序;
分块处理模块,用于针对每个数据表分别对应的批处理程序,按照预设分块规则对所述批处理程序进行分块处理,得到与所述批处理程序对应的多个程序块;
目标确定模块,用于根据不同程序块使用的属性之间的依赖关系,确定与所述目标属性关联的目标程序块;
删除处理模块,用于删除所述多个程序块中除所述目标程序块之外的其他程序块,并删除所述目标程序块中与所述目标属性无关的其他属性对应的处理代码,得到经删除处理后的程序块;
程序生成模块,用于根据经删除处理后的程序块,生成与所述批处理程序对应的子处理程序;
子程序确定模块,用于基于与每个批处理程序分别对应的子处理程序,得到所述程序集合中与所述目标属性对应的程序子集。
在一些实施方式中,上述程序拆分装置还包括:
编号处理模块,用于在针对每个数据表分别对应的批处理程序,按照预设分块规则对所述批处理程序进行分块处理,得到与所述批处理程序对应的多个程序块之后,根据所述多个程序块在所述批处理程序中的位置顺序,依次对所述多个程序块进行编号处理;
所述程序生成模块,包括:
顺序确定子模块,用于根据经删除处理后的程序块对应的编号大小,确定程序块排列顺序;
拼接处理子模块,用于按照所述程序块排列顺序对经删除处理后的程序块进行拼接处理,生成与所述批处理程序对应的子处理程序。
在一些实施方式中,上述程序拆分装置还包括:
关系确定模块,用于在根据不同程序块使用的属性之间的依赖关系,确定与所述目标属性关联的目标程序块之前,针对所述多个程序块中的每个程序块,分别执行如下步骤,得到每个程序块分别使用的属性,以及不同程序块使用的属性之间的依赖关系:
上述关系确定模块,具体包括:
类型识别子模块,用于识别所述程序块对应的块类型;
方式确定子模块,用于根据所述块类型,确定所述程序块对应的解析处理方式;
解析处理子模块,用于按照所述解析处理方式,对所述程序块进行解析处理。
在一些实施方式中,上述关系确定模块,具体用于:
基于所述多个程序块在所述批处理程序中的位置顺序,倒序遍历每个程序块,以针对所述多个程序块中的每个程序块,分别执行如下步骤,得到每个程序块分别使用的属性,以及不同程序块使用的属性之间的依赖关系。
在一些实施方式中,上述分块处理模块,具体包括:
标识符识别子模块,用于识别所述批处理程序中包含的多个标识符;
分割处理子模块,用于以所述标识符为分割点,对所述批处理程序进行分块处理,得到与所述批处理程序对应的多个程序块。
在一些实施方式中,上述程序拆分装置还包括:
输入接收模块,用于在获取与待拆分的程序集合关联的多个数据表之前,接收用户对所述多个属性中至少一个目标属性的选择输入;
输入响应模块,用于响应于所述选择输入,获取与所述多个属性对应的批处理程序集合,作为所述待拆分的程序集合,并确定所述至少一个目标属性。
在一些实施方式中,所述目标程序块包括使用所述目标属性的第一程序块,以及使用所述目标属性所依赖的其他属性的第二程序块。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括:处理器以及存储有计算机程序指令的存储器;
处理器执行所述计算机程序指令时实现如第一方面的任一项实施例中所述的程序拆分方法的步骤。
第四方面,本申请实施例提供了一种计算机存储介质,计算机存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现如第一方面的任一项实施例中所述的程序拆分方法的步骤。
本申请实施例中的程序拆分方法、装置、设备及计算机存储介质,通过对每个批处理程序进行分块处理,并利用各程序块所使用的属性之间的依赖关系,自动获取与目标属性关联的目标程序块,进而通过删除无关的其他程序块以及目标程序块中与目标属性无关的其他属性对应的处理代码,自动生成与每个批处理程序分别对应的子处理程序,如此,可得到待拆分的程序集合中与目标属性对应的程序子集,这样,无需人工进行程序拆分,即可自动从程序集合中准确拆分出与任意目标属性对应的子集程序,提高了程序拆分效率,降低了出错概率,使子集程序的获取,用户只需考虑需要抽取的属性的范围,而不需要考虑程序拆分的具体实施过程。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单的介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提供的程序拆分方法的流程示意图之一;
图2a是本申请一实施例提供的程序块依赖关系的示意图之一;
图2b是本申请一实施例提供的程序块依赖关系的示意图之二;
图3a是本申请一实施例提供的程序块之间属性依赖关系的示意图之一;
图3b是本申请一实施例提供的程序块之间属性依赖关系的示意图之二;
图4是本申请一实施例提供的程序拆分方法的流程示意图之二;
图5是本申请一实施例提供的程序块处理类型选择过程的示意图之一;
图6是本申请一实施例提供的程序拆分系统的架构示意图;
图7是本申请一实施例提供的示例性程序拆分方法的流程示意图;
图8是本申请一实施例提供的程序拆分装置的结构示意图;
图9是本申请一实施例提供的电子设备的结构示意图。
具体实施方式
下面将详细描述本申请的各个方面的特征和示例性实施例,为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本申请进行进一步详细描述。应理解,此处所描述的具体实施例仅意在解释本申请,而不是限定本申请。对于本领域技术人员来说,本申请可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本申请的示例来提供对本申请更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了解决现有技术问题,本申请实施例提供了一种程序拆分方法、装置、设备及计算机存储介质。该程序拆分方法可以应用于对批处理程序集合进行程序拆分的场景,下面首先对本申请实施例所提供的程序拆分方法进行介绍。
图1示出了本申请一实施例提供的程序拆分方法的流程示意图。如图1所示,该程序拆分方法具体可以包括如下步骤:
步骤110,获取与待拆分的程序集合关联的多个数据表;其中,程序集合中对应使用多个属性,多个属性中包括待抽取的至少一个目标属性。
步骤120,从程序集合中获取与每个数据表分别对应的批处理程序。
步骤130,针对每个数据表分别对应的批处理程序,按照预设分块规则对批处理程序进行分块处理,得到与批处理程序对应的多个程序块。
步骤140,根据不同程序块使用的属性之间的依赖关系,确定与目标属性关联的目标程序块。
步骤150,删除多个程序块中除目标程序块之外的其他程序块,并删除目标程序块中与目标属性无关的其他属性对应的处理代码,得到经删除处理后的程序块;
步骤160,根据经删除处理后的程序块,生成与批处理程序对应的子处理程序。
步骤170,基于与每个批处理程序分别对应的子处理程序,得到程序集合中与目标属性对应的程序子集。
由此,通过对每个批处理程序进行分块处理,并利用各程序块所使用的属性之间的依赖关系,自动获取与目标属性关联的目标程序块,进而通过删除无关的其他程序块以及目标程序块中与目标属性无关的其他属性对应的处理代码,自动生成与每个批处理程序分别对应的子处理程序,如此,可得到待拆分的程序集合中与目标属性对应的程序子集,这样,无需人工进行程序拆分,即可自动从程序集合中准确拆分出与任意目标属性对应的子集程序,提高了程序拆分效率,降低了出错概率,使子集程序的获取,用户只需考虑需要抽取的属性的范围,而不需要考虑程序拆分的具体实施过程。
下面对上述步骤进行详细说明,具体如下所示:
涉及步骤110,本申请实施例中,待拆分的程序集合中可包括多个批处理程序,该程序集合可关联多个数据表,一个数据表可对应于一个批处理程序。其中,与该程序集合关联的多个数据表中包含有多个属性及其对应的属性值等数据,其中,该多个属性可以是程序集合所使用的属性。
在一些实施方式中,在步骤110之前,上述程序拆分方法还可以包括:
接收用户对多个属性中至少一个目标属性的选择输入;
响应于选择输入,获取与多个属性对应的批处理程序集合,作为待拆分的程序集合,并确定至少一个目标属性。
示例性地,用户可在程序拆分系统对应的交互界面中,针对多个属性进行属性抽取选择。在一个具体例子中,若用户需要从100个属性中选取80个属性,则可通过交互界面选择相应的属性抽取范围,例如从该100个属性中选择需要保留的80个属性,或者选择需要删除的20个属性,在接收到用户输入后,可先获取原100个属性对应的批处理程序集合,将其作为待拆分的程序集合,并确定其中抽取的80个属性,将其作为目标属性。
如此,用户无需关心程序的拆解过程,只需输入需要保留的属性的范围,即可完成程序集合的自动拆分。
涉及步骤120,本申请实施例中,不同数据表可具有不同的标识,用于唯一表示该数据表,其中,标识可以是表名称、表编号等信息。示例性地,可根据遍历到的每个数据表分别对应的表名称,从待拆分的程序集合中读取与每个数据表各自对应的批处理程序对应的脚本。
涉及步骤130,本申请实施例中,为了便于识别各个属性在程序集合中的分布位置,可以单个数据表对应的批处理程序脚本为一个处理单位,对每个批处理程序进行遍历处理。另外,为了确定单个批处理程序中所使用的属性之间的依赖关系,可在处理每个批处理程序时,先对批处理程序进行分块处理,得到与每个批处理程序分别对应的多个程序块。其中,预设分块规则例如可以是以特定标识符为分割点进行分块的规则,或者以标志性语句为分割点进行分块的规则。
需要说明的是,若批处理程序中包含备注信息,则可先删除程序中的备注信息,再执行程序的分块处理。
在一些实施方式中,上述步骤130,具体可以包括:
识别批处理程序中包含的多个标识符;
以标识符为分割点,对批处理程序进行分块处理,得到与批处理程序对应的多个程序块。
这里,标识符可以是设定符号、具有特殊含义的字母单词或者其组合等,例如“;”、“begin”、“end”等。
在一个具体例子中,可对单个批处理程序,以“end”为分割点,对单个批处理程序执行分块处理操作,得到该批处理程序对应的多个程序块。
涉及步骤140,本申请实施例中,由于同一数据表中包括的不同属性之间可能具有依赖关系,因此,同属一个批处理程序的不同程序块所使用的属性之间可能存在依赖关系。例如,若一个属性a的值为另外两个属性属性b和属性c的和,则可确定属性a依赖于属性b和属性c。
在一个具体例子中,如图2a所示,程序块11中使用的属性A1依赖于程序块12中使用的属性B1和属性B2,程序块11中使用的属性A2依赖于程序块13中使用的属性B2和程序块12中使用的属性C1。又如图2b所示,程序块12中使用的属性B1依赖于程序块14中使用的属性D1和属性D3,程序块12中使用的属性B2依赖于程序块14中使用的属性D2。
本申请实施例中可根据每个程序块的块内容,与该批处理程序对应的数据表中包括的属性进行匹配,进而根据属性之间的依赖关系,确定需要追溯的属性依赖范围,依次递归,追溯依赖的表和属性字段,直至无后续依赖,从而可在与需要抽取的目标属性对应的依赖范围内,确定与目标属性关联的一个或多个程序块,作为目标程序块。
在一些实施方式中,目标程序块具体可以包括使用目标属性的第一程序块,以及使用目标属性所依赖的其他属性的第二程序块。
在一个具体例子中,基于如图3a所示的程序块之间的属性依赖关系,若需要抽取的目标属性为程序块11中的属性A1,则可确定目标程序块为程序块11、程序块12和程序块14。同样地,如图3b所示,若需要抽取的目标属性为程序块11中的属性A2,则可确定目标程序块为程序块11、程序块12、程序块13和程序块14。
如此,可追溯到每个需要抽取的属性对应的程序块范围,以便对与该属性无关的程序块或代码进行删除处理,得到与抽取的属性对应的程序子集。
涉及步骤150,本申请实施例中,可删除目标程序块之外的其他程序块,以及目标程序块中与目标属性无关的其他属性对应的处理代码,进而可得到经删除处理后剩余的程序块及程序块中的处理代码。
示例性地,基于依赖追溯的结果,可依次对程序块和/或程序块中的代码进行裁剪、删除。在一个具体例子中,基于如图3a所示的程序块之间的属性依赖关系,若需要抽取的目标属性为属性A1,则可知程序块13不会被引用,此时,可将该程序块13的代码直接删除。另外,程序块11中,属性A2和属性A3不被引用,因此,涉及A2、A3的代码也可以删除,同理,其他程序块中与属性A1无依赖关系的属性所对应的代码也可以删除,例如程序块12中的属性B3。
涉及步骤160和步骤170,本申请实施例中,经删除处理后剩余的程序块及程序块中的处理代码,经整合后写入文件,可得到与原批处理程序对应的新的批处理程序,也即子处理程序。
最后,将与每个数据表分别对应的经裁剪后的批处理程序,也即,与程序集合中每个批处理程序分别对应的子处理程序集合起来,最终可形成完整的程序子集,该程序子集即为程序集合中与目标属性对应的拆分得到的程序。
另外,在一些实施方式中,在上述步骤130之后,本申请实施例提供的程序拆分方法还可以包括:
根据多个程序块在批处理程序中的位置顺序,依次对多个程序块进行编号处理;
相应地,上述步骤160具体可以包括:
根据经删除处理后的程序块对应的编号大小,确定程序块排列顺序;
按照程序块排列顺序对经删除处理后的程序块进行拼接处理,生成与批处理程序对应的子处理程序。
这里,由于每个程序块在批处理程序中的位置顺序可能会影响程序块之间的执行顺序,因此,可在对批处理程序进行分块时,记录程序块之间的位置顺序,进而在经删除处理后,依据该位置顺序,对各个程序块进行拼接处理,从而保证子处理程序中的代码执行顺序不受影响。
示例性地,记录位置顺序的方式可以是,在对程序块进行拆分的过程中,按照分块顺序,自上而下,依次对每个程序块进行编号,例如依次标序1,2,3,……N。在对经删除处理后的程序块进行拼接时,可按照各程序块对应编号的大小,例如按照编号从小到大的顺序,对各个程序块进行排列,进而按照该排列顺序进行拼接处理,生成相应的子处理程序。
另外,在一些实施方式中,如图4所示,在步骤140之前,该程序拆分方法还可以包括:针对多个程序块中的每个程序块,分别执行如下步骤1401-步骤1403,得到每个程序块分别使用的属性,以及不同程序块使用的属性之间的依赖关系,下面对此进行详细解释。
步骤1401,识别程序块对应的块类型;
步骤1402,根据块类型,确定程序块对应的解析处理方式;
步骤1403,按照解析处理方式,对程序块进行解析处理。
这里,程序块可分为多个块类型,例如INSERT类型、DELETE类型以及UPDATE类型等。相应地,不同的块类型可对应不同的解析处理方式,例如INSERT类型对应INSERT块处理,DELETE类型对应DELETE块处理,UPDATE类型对应UPDATE块处理等。
示例性地,可利用选择路由识别程序块中的代码内容,判断该程序块属于哪种块类型,再确定该程序块按照什么类型进行解析处理。其中,选择路由可以是一段判断程序,用于判断程序块属于什么类型,进而分配何种解析处理方式进行解析处理。
在一个具体例子中,如图5所示,可将每个程序块分别输入至选择路由51中,若识别出程序块属于INSERT类型,则可将该程序块输入至INSERT块处理模块52中,以按照INSERT类型对应的解析处理方式进行解析处理,以解析得到该程序块所使用的属性;若识别出程序块属于DELETE类型,则可将该程序块输入至DELETE块处理模块53中,以按照DELETE类型对应的解析处理方式进行解析处理,以解析得到该程序块所使用的属性;若识别出程序块属于UPDATE类型,则可将该程序块输入至UPDATE块处理模块54中,以按照UPDATE类型对应的解析处理方式进行解析处理,以解析得到该程序块所使用的属性。最后,对照数据表中各属性之间的依赖关系,可确定不同程序块使用的属性之间的依赖关系。
基于此,在一些实施方式中,上述针对多个程序块中的每个程序块,分别执行上述步骤1401-步骤1403,得到每个程序块分别使用的属性,以及不同程序块使用的属性之间的依赖关系,具体可以包括:
基于多个程序块在批处理程序中的位置顺序,倒序遍历每个程序块,以针对多个程序块中的每个程序块,分别执行上述步骤1401-步骤1403,得到每个程序块分别使用的属性,以及不同程序块使用的属性之间的依赖关系。
这里,为了便于确定不同程序块所使用的属性之间的依赖关系,可采用倒序的方式依次解析处理每个程序块,也即最后执行的程序块最先进行解析处理,并以此类推,遍历每个程序块。
如此,通过针对不同的程序块的块类型,采用不同的解析方式进行解析处理,可以有助于准确识别该程序块的内容,并确定其所使用的属性,进而依据不同程序块所使用的属性之间的依赖关系,准确确定目标属性对应的追溯范围,以便于进行准确的程序拆分。
为了更好地描述整个方案,基于上述各实施例,举一个具体例子。
例如,如图6所示的程序拆分系统的框架结构图。该程序拆分系统可以包括输入模块61、单表处理模块62和输出模块63,下面对此进行详细解释。
输入模块61中可包括全集模型、子集模型以及全集程序,将这三个参数作为输入参数。其中,全集模型可以包括所有的属性全集,子集模型可以包括属性全集中需要抽取的属性子集,也即目标属性,全集程序可以包括与该全集模型对应的批处理程序的集合。全集模型可对应于多个数据表,全集模型对应的数据表与批处理程序之间一一对应。
单表处理模块62可用于依次对单个数据表对应的批处理程序进行相应的删除、裁剪处理,直至遍历完待拆分的程序集合所对应的每个数据表。
输出模块63可用于根据单表处理模块处理得到的结果,依次输出单个表对应的裁剪后的批处理程序,最终形成完整的程序子集。
另外,单表处理模块62中还可包括多个步骤,如图7所示,具体可包括步骤701-707,如下所示,下面对此进行详细解释。
步骤701,读取脚本。
在一个具体例子中,根据遍历到的数据表的表名称,从全集程序中读取对应的批处理程序脚本。
步骤702,分块处理。
在一个具体例子中,根据步骤701读取的批处理程序脚本,去除备注信息后,执行代码块分块处理。按分块的顺序,自上而下,依次标序1,2,3,..N。
步骤703,块倒序。
在一个具体例子中,根据分块处理后的序号,倒序处理,即最后执行的代码,排序最前。
步骤704,遍历处理。
在一个具体例子中,遍历每个程序块,并调用块处理单元进行处理。
步骤705,块处理。
在一个具体例子中,预设INSERT块处理、DELETE块处理、UPDATE块处理等类型,根据选择路由,确定每个程序块按什么类型进行处理,解析程序块使用的属性,以及属性依赖的块或表的属性,形成依赖关系。
步骤706,是否为最后一个程序块,若是,则执行步骤707;若否,则返回执行步骤705。
步骤707,依赖追溯。
在一个具体例子中,根据每个程序块的内容,和子集模型表属性进行匹配,确定需要追溯的属性范围。然后依次递归,追溯依赖的表和字段,直至无后续依赖。
步骤708,脚本生成。
在一个具体例子中,根据依赖追溯的结果,依次对块的代码进行裁剪或删除。移除后的代码,根据块序号从小到大,依次写入文件,生成批处理程序对应的脚本文件。
由此,本申请实施例提供的程序拆分方法,解决了以往从全集程序中拆分出子集程序的过程,无法批量维护,效率低,易出错的问题,使子集程序的获取,仅需要考虑需要的属性的范围,不需要考虑具体的实施过程。
需要说明的是,上述本申请实施例描述的应用场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
基于相同的发明构思,本申请还提供了一种程序拆分装置。具体结合图8进行详细说明。
图8是根据一示例性实施例示出的一种程序拆分装置的结构示意图。
如图8所示,该程序拆分装置800可以包括:
数据表获取模块801,用于获取与待拆分的程序集合关联的多个数据表;其中,程序集合中对应使用多个属性,多个属性中包括待抽取的至少一个目标属性;
程序获取模块802,用于从程序集合中获取与每个数据表分别对应的批处理程序;
分块处理模块803,用于针对每个数据表分别对应的批处理程序,按照预设分块规则对批处理程序进行分块处理,得到与批处理程序对应的多个程序块;
目标确定模块804,用于根据不同程序块使用的属性之间的依赖关系,确定与目标属性关联的目标程序块;
删除处理模块805,用于删除多个程序块中除目标程序块之外的其他程序块,并删除目标程序块中与目标属性无关的其他属性对应的处理代码,得到经删除处理后的程序块;
程序生成模块806,用于根据经删除处理后的程序块,生成与批处理程序对应的子处理程序;
子程序确定模块807,用于基于与每个批处理程序分别对应的子处理程序,得到程序集合中与目标属性对应的程序子集。
下面对上述程序拆分装置800进行详细说明,具体如下所示:
在其中一些实施例中,上述程序拆分装置800还包括:
编号处理模块,用于在针对每个数据表分别对应的批处理程序,按照预设分块规则对批处理程序进行分块处理,得到与批处理程序对应的多个程序块之后,根据多个程序块在批处理程序中的位置顺序,依次对多个程序块进行编号处理;
上述程序生成模块806,包括:
顺序确定子模块,用于根据经删除处理后的程序块对应的编号大小,确定程序块排列顺序;
拼接处理子模块,用于按照程序块排列顺序对经删除处理后的程序块进行拼接处理,生成与批处理程序对应的子处理程序。
在其中一些实施例中,上述程序拆分装置800还包括:
关系确定模块,用于在根据不同程序块使用的属性之间的依赖关系,确定与目标属性关联的目标程序块之前,针对多个程序块中的每个程序块,分别执行如下步骤,得到每个程序块分别使用的属性,以及不同程序块使用的属性之间的依赖关系;
上述关系确定模块,具体包括:
类型识别子模块,用于识别程序块对应的块类型;
方式确定子模块,用于根据块类型,确定程序块对应的解析处理方式;
解析处理子模块,用于按照解析处理方式,对程序块进行解析处理。
在其中一些实施例中,上述关系确定模块,具体用于:
基于多个程序块在批处理程序中的位置顺序,倒序遍历每个程序块,以针对多个程序块中的每个程序块,分别执行如下步骤,得到每个程序块分别使用的属性,以及不同程序块使用的属性之间的依赖关系。
在其中一些实施例中,上述分块处理模块803,具体包括:
标识符识别子模块,用于识别批处理程序中包含的多个标识符;
分割处理子模块,用于以标识符为分割点,对批处理程序进行分块处理,得到与批处理程序对应的多个程序块。
在其中一些实施例中,上述程序拆分装置800还包括:
输入接收模块,用于在获取与待拆分的程序集合关联的多个数据表之前,接收用户对多个属性中至少一个目标属性的选择输入;
输入响应模块,用于响应于选择输入,获取与多个属性对应的批处理程序集合,作为待拆分的程序集合,并确定至少一个目标属性。
在一些实施方式中,目标程序块包括使用目标属性的第一程序块,以及使用目标属性所依赖的其他属性的第二程序块。
由此,通过对每个批处理程序进行分块处理,并利用各程序块所使用的属性之间的依赖关系,自动获取与目标属性关联的目标程序块,进而通过删除无关的其他程序块以及目标程序块中与目标属性无关的其他属性对应的处理代码,自动生成与每个批处理程序分别对应的子处理程序,如此,可得到待拆分的程序集合中与目标属性对应的程序子集,这样,无需人工进行程序拆分,即可自动从程序集合中准确拆分出与任意目标属性对应的子集程序,提高了程序拆分效率,降低了出错概率,使子集程序的获取,用户只需考虑需要抽取的属性的范围,而不需要考虑程序拆分的具体实施过程。
图9示出了本申请实施例提供的电子的硬件结构示意图。
在电子设备可以包括处理器901以及存储有计算机程序指令的存储器902。
具体地,上述处理器901可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
存储器902可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器902可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器902可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器902可在综合网关容灾设备的内部或外部。在特定实施例中,存储器902是非易失性固态存储器。
存储器可包括只读存储器(ROM),随机存取存储器(RAM),磁盘存储介质设备,光存储介质设备,闪存设备,电气、光学或其他物理/有形的存储器存储设备。因此,通常,存储器包括一个或多个编码有包括计算机可执行指令的软件的有形(非暂态)计算机可读存储介质(例如,存储器设备),并且当该软件被执行(例如,由一个或多个处理器)时,其可操作来执行参考根据本申请的一方面的方法所描述的操作。
处理器901通过读取并执行存储器902中存储的计算机程序指令,以实现上述实施例中的任意一种程序拆分方法。
在一些示例中,电子设备还可包括通信接口903和总线910。其中,如图9所示,处理器901、存储器902、通信接口903通过总线910连接并完成相互间的通信。
通信接口903,主要用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。
总线910包括硬件、软件或两者,将在线数据流量计费设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线910可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
该电子设备可以执行本申请实施例中的程序拆分方法,从而实现结合图1和图7描述的程序拆分方法和装置。
另外,结合上述实施例中的程序拆分方法,本申请实施例可提供一种计算机存储介质来实现。该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种程序拆分方法。
需要明确的是,本申请并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本申请的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本申请的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本申请的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本申请中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本申请不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
上面参考根据本申请的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本申请的各方面。应当理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的这些指令使能对流程图和/或框图的一个或多个方框中指定的功能/动作的实现。这种处理器可以是但不限于是通用处理器、专用处理器、特殊应用处理器或者现场可编程逻辑电路。还可理解,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,也可以由执行指定的功能或动作的专用硬件来实现,或可由专用硬件和计算机指令的组合来实现。
以上所述,仅为本申请的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。
Claims (10)
1.一种程序拆分方法,其特征在于,包括:
获取与待拆分的程序集合关联的多个数据表;其中,所述程序集合中对应使用多个属性,所述多个属性中包括待抽取的至少一个目标属性;
从所述程序集合中获取与每个数据表分别对应的批处理程序;
针对每个数据表分别对应的批处理程序,按照预设分块规则对所述批处理程序进行分块处理,得到与所述批处理程序对应的多个程序块;
根据不同程序块使用的属性之间的依赖关系,确定与所述目标属性关联的目标程序块;
删除所述多个程序块中除所述目标程序块之外的其他程序块,并删除所述目标程序块中与所述目标属性无关的其他属性对应的处理代码,得到经删除处理后的程序块;
根据经删除处理后的程序块,生成与所述批处理程序对应的子处理程序;
基于与每个批处理程序分别对应的子处理程序,得到所述程序集合中与所述目标属性对应的程序子集。
2.根据权利要求1所述的方法,其特征在于,在针对每个数据表分别对应的批处理程序,按照预设分块规则对所述批处理程序进行分块处理,得到与所述批处理程序对应的多个程序块之后,所述方法还包括:
根据所述多个程序块在所述批处理程序中的位置顺序,依次对所述多个程序块进行编号处理;
所述根据经删除处理后的程序块,生成与所述批处理程序对应的子处理程序,包括:
根据经删除处理后的程序块对应的编号大小,确定程序块排列顺序;
按照所述程序块排列顺序对经删除处理后的程序块进行拼接处理,生成与所述批处理程序对应的子处理程序。
3.根据权利要求1所述的方法,其特征在于,在根据不同程序块使用的属性之间的依赖关系,确定与所述目标属性关联的目标程序块之前,所述方法还包括:
针对所述多个程序块中的每个程序块,分别执行如下步骤,得到每个程序块分别使用的属性,以及不同程序块使用的属性之间的依赖关系:
识别所述程序块对应的块类型;
根据所述块类型,确定所述程序块对应的解析处理方式;
按照所述解析处理方式,对所述程序块进行解析处理。
4.根据权利要求3所述的方法,其特征在于,所述针对所述多个程序块中的每个程序块,分别执行如下步骤,得到每个程序块分别使用的属性,以及不同程序块使用的属性之间的依赖关系,包括:
基于所述多个程序块在所述批处理程序中的位置顺序,倒序遍历每个程序块,以针对所述多个程序块中的每个程序块,分别执行如下步骤,得到每个程序块分别使用的属性,以及不同程序块使用的属性之间的依赖关系。
5.根据权利要求1所述的方法,其特征在于,所述按照预设分块规则对所述批处理程序进行分块处理,得到与所述批处理程序对应的多个程序块,包括:
识别所述批处理程序中包含的多个标识符;
以所述标识符为分割点,对所述批处理程序进行分块处理,得到与所述批处理程序对应的多个程序块。
6.根据权利要求1所述的方法,其特征在于,在获取与待拆分的程序集合关联的多个数据表之前,所述方法还包括:
接收用户对所述多个属性中至少一个目标属性的选择输入;
响应于所述选择输入,获取与所述多个属性对应的批处理程序集合,作为所述待拆分的程序集合,并确定所述至少一个目标属性。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述目标程序块包括使用所述目标属性的第一程序块,以及使用所述目标属性所依赖的其他属性的第二程序块。
8.一种程序拆分装置,其特征在于,所述装置包括:
数据表获取模块,用于获取与待拆分的程序集合关联的多个数据表;其中,所述程序集合中对应使用多个属性,所述多个属性中包括待抽取的至少一个目标属性;
程序获取模块,用于从所述程序集合中获取与每个数据表分别对应的批处理程序;
分块处理模块,用于针对每个数据表分别对应的批处理程序,按照预设分块规则对所述批处理程序进行分块处理,得到与所述批处理程序对应的多个程序块;
目标确定模块,用于根据不同程序块使用的属性之间的依赖关系,确定与所述目标属性关联的目标程序块;
删除处理模块,用于删除所述多个程序块中除所述目标程序块之外的其他程序块,并删除所述目标程序块中与所述目标属性无关的其他属性对应的处理代码,得到经删除处理后的程序块;
程序生成模块,用于根据经删除处理后的程序块,生成与所述批处理程序对应的子处理程序;
子程序确定模块,用于基于与每个批处理程序分别对应的子处理程序,得到所述程序集合中与所述目标属性对应的程序子集。
9.一种电子设备,其特征在于,所述设备包括:处理器以及存储有计算机程序指令的存储器;
所述处理器执行所述计算机程序指令时实现如权利要求1-7任意一项所述的程序拆分方法的步骤。
10.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1-7任意一项所述的程序拆分方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111406731.2A CN114090014A (zh) | 2021-11-24 | 2021-11-24 | 程序拆分方法、装置、设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111406731.2A CN114090014A (zh) | 2021-11-24 | 2021-11-24 | 程序拆分方法、装置、设备及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114090014A true CN114090014A (zh) | 2022-02-25 |
Family
ID=80304126
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111406731.2A Pending CN114090014A (zh) | 2021-11-24 | 2021-11-24 | 程序拆分方法、装置、设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114090014A (zh) |
-
2021
- 2021-11-24 CN CN202111406731.2A patent/CN114090014A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109388566B (zh) | 一种代码覆盖率分析方法、装置、设备及存储介质 | |
CN113190220A (zh) | Json文件差异化对比方法及装置 | |
CN114090671A (zh) | 数据导入方法、装置、电子设备及存储介质 | |
CN114398394A (zh) | 数据血缘解析方法、装置、设备及存储介质 | |
CN110990350A (zh) | 日志的解析方法及装置 | |
CN114090014A (zh) | 程序拆分方法、装置、设备及计算机存储介质 | |
CN114510902B (zh) | 仿真结果的验证方法、装置、设备及计算机存储介质 | |
CN116257223A (zh) | 数据隔离开发方法、装置、设备、可读存储介质及产品 | |
CN112567375A (zh) | 形式验证方法、信息识别方法、设备和存储介质 | |
CN116029290A (zh) | 文本匹配方法、装置、设备、介质及产品 | |
CN111736848B (zh) | 包冲突定位方法、装置、电子设备及可读存储介质 | |
CN115098362A (zh) | 页面测试方法、装置、电子设备以及存储介质 | |
CN108416056B (zh) | 基于条件包含依赖的相关性学习方法、装置、设备及介质 | |
JP5487078B2 (ja) | ソフトウェア資産整理方法及び装置 | |
CN112306961B (zh) | 日志处理方法、装置、设备及存储介质 | |
CN116955211B (zh) | 标准符合性测试方法、装置、电子设备及存储介质 | |
CN110532561B (zh) | 数据检测方法及装置、存储介质、电子装置 | |
CN113569974B (zh) | 编程语句纠错方法、装置、电子设备及存储介质 | |
CN114519279A (zh) | 仿真结果的验证方法、装置、设备及计算机存储介质 | |
CN114924980A (zh) | 软件测试方法、装置、电子设备及介质 | |
CN117971618A (zh) | 数据库性能问题处理方法、装置、设备、介质及产品 | |
CN116737593A (zh) | 一种重复测试案例清除方法及装置 | |
CN116185831A (zh) | 闭环测试的方法、装置、电子设备及计算机可读存储介质 | |
CN115640016A (zh) | 一种代码分析方法、装置、电子设备及存储介质 | |
CN112328595A (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 |