CN116150277A - 数据批处理脚本的处理方法、装置、设备及存储介质 - Google Patents
数据批处理脚本的处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116150277A CN116150277A CN202310193701.0A CN202310193701A CN116150277A CN 116150277 A CN116150277 A CN 116150277A CN 202310193701 A CN202310193701 A CN 202310193701A CN 116150277 A CN116150277 A CN 116150277A
- Authority
- CN
- China
- Prior art keywords
- script
- sub
- module
- batch
- field
- 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Stored Programmes (AREA)
Abstract
本申请提供一种数据批处理脚本的处理方法、装置、设备及存储介质。涉及人工智能、大数据、计算机技术、信息技术以及数据加工技术领域。该方法包括:根据数据批处理脚本确定多个脚本子模块;响应于批处理指令,若批处理指令为断点续做,则根据预先记录的脚本子模块的控制信息确定未执行完毕的目标脚本子模块;根据目标子模块依次执行剩余未执行的脚本子模块,根据执行情况修改脚本子模块的控制信息。能够将数据批处理脚本划分为多个脚本子模块,断点续做时,以脚本子模块为单位确定目标脚本子模块。脚本子模块实现对数据批处理脚本的合理分割,保证断点续做起始位置为脚本子模块的起始脚本,提高断点续做稳定性。
Description
技术领域
本申请实施例涉及人工智能、大数据、计算机技术、信息技术以及数据加工技术领域,尤其涉及一种数据批处理脚本的处理方法、装置、设备及存储介质。
背景技术
在大数据背景下,数据批处理用于对数据进行批量处理。通常使用脚本编辑批处理内容,通过对数据批处理脚本的运行,实现大数据的批量处理。
在数据批处理期间,因为某些原因导致批处理中断后,如果重启数据批处理脚本,则涉及断点续做。然而目前从续做位置继续执行存在批处理执行不稳定的情况,导致断点续做稳定性差。
发明内容
本申请提供一种数据批处理脚本的处理方法、装置、设备及存储介质,用以解决现有技术中断点续做稳定性差的问题。
第一方面,本申请实施例提供了一种数据批处理脚本的处理方法,包括:
根据数据批处理脚本确定多个脚本子模块;
响应于批处理指令,若批处理指令为断点续做,则根据预先记录的脚本子模块的控制信息确定未执行完毕的目标脚本子模块;
根据目标子模块依次执行剩余未执行的脚本子模块,根据执行情况修改脚本子模块的控制信息。
第二方面,本申请实施例还提供了一种数据批处理脚本的处理装置,包括:
子模块划分模块,用于根据数据批处理脚本确定多个脚本子模块;
断点续做响应模块,用于响应于批处理指令,若批处理指令为断点续做,则根据预先记录的脚本子模块的控制信息确定未执行完毕的目标脚本子模块;
断点续做执行模块,用于根据目标子模块依次执行剩余未执行的脚本子模块;根据执行情况修改脚本子模块的控制信息。
第三方面,本申请实施例还提供了一种电子设备,包括:处理器,以及与处理器通信连接的存储器;
存储器存储计算机执行指令;
处理器执行存储器存储的计算机执行指令,以实现如本申请实施例所示的数据批处理脚本的处理方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现如本申请实施例所示的数据批处理脚本的处理方法。
第五方面,本申请实施例还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现本申请实施例所示的数据批处理脚本的处理方法。
本申请提供的数据批处理脚本的处理方法,根据数据批处理脚本确定多个脚本子模块;响应于批处理指令,若批处理指令为断点续做,则根据预先记录的脚本子模块的控制信息确定未执行完毕的目标脚本子模块;根据目标子模块依次执行剩余未执行的脚本子模块,根据执行情况修改脚本子模块的控制信息。相对于目前断点续做稳定性差的问题,本发明能够将数据批处理脚本划分为多个脚本子模块,断点续做时,以脚本子模块为单位确定目标脚本子模块。脚本子模块的起始位置固定,且每个脚本子模块的代码运行流程。脚本子模块实现对数据批处理脚本的合理分割,保证断点续做起始位置为脚本子模块的起始脚本,不会出现从脚本子模块中间进行断点续做,导致断点续做不稳定的情况。断点续做时,从目标脚本子模块的起始脚本开始还行,依次执行剩余未执行的脚本子模块,完成断点续做,提高断点续做稳定性。
附图说明
图1是本申请实施例中提供的数据批处理脚本的处理方法的流程图一;
图2是本申请实施例中提供的数据批处理脚本的处理方法的流程图二;
图3是本申请实施例中提供的数据批处理脚本的处理方法的流程图三;
图4是本申请实施例中提供的数据批处理脚本的处理方法的流程图四;
图5是本申请实施例中提供的数据批处理脚本的处理方法的流程图五;
图6是本申请实施例中提供的数据批处理脚本的处理装置的结构示意图一;
图7是本申请实施例中提供的数据批处理脚本的处理装置的结构示意图二;
图8是本申请实施例中提供的电子设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在大数据背景下,数据批处理用于对数据进行批量处理。通常使用脚本编辑批处理内容,通过对数据批处理脚本的运行,实现大数据的批量处理。
涉及大数据量的加工时,数据批处理脚本用于加工数据。数据批处理脚本需要执行很长时间。在数据批处理脚本运行期间,如果因某个原因(例如脚本执行报错,或运行时间达到告警阈值而被运维人员强制中止)使得脚本的执行过程被中断,并且待加工的数据可能并未处理完毕,则当重新执行脚本时,如果对于脚本中断当时已经处理完毕的数据,能够不再重复处理,而只是针对中断当时还未处理的数据进行加工,使得加工脚本无论是否出现被中断的情况,都能让加工耗时基本保持相同,则作业的加工效率就能得到保证,并且对于后续其它脚本的加工结束时间也不会造成明显影响,有利于数据批处理系统的正常稳定运行。
然而在断点续做中,标记断点的方式为在总断时标记代码位置,当断点续做时,从标记的代码位置继续执行数据处理脚本。由于脚本的执行需要前后文呼应,且标记位置与实际执行代码位置存在误差,导致断点续做启动位置误差,进而导致断点续做不稳定。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。本发明涉及的用户标识、用户卡号等信息的处理均属于符合国家法律法规范畴。下面将结合附图,对本申请的实施例进行描述。
图1为本申请实施例提供的数据批处理脚本的处理方法的流程图一,本实施例可适用于大数据场景下通过数据批处理脚本对数据进行批处理的情况,尤其是包括断点续做和非断点续做的情况,该方法可以由服务器或终端等电子设备来执行。如图1所示,本申请提供的数据批处理脚本的处理方法,包括:
S110、根据数据批处理脚本确定多个脚本子模块。
数据批处理脚本用于对大数据进行批处理。可以根据多种方式将数据批处理脚本进行划分,得到多个脚本子模块,每个脚本子模块包含一个或多个批处理语句。批处理语句可以为结构化查询语言(Structured Query Language,SQL)语句。
可选的,根据数据批处理脚本确定多个脚本子模块,可通过下述方式实施:
根据业务功能对数据批处理脚本进行划分,得到多个脚本子模块,每个脚本子模块用于进行一个数据加工步骤。
可以将数据批处理脚本中的语句按照业务逻辑的功能划分成多个脚本子模块,每个脚本子模块中的数据加工操作都属于同一个功能。示例性的,按照功能划分出数据准备、数据处理和数据复制三个脚本子模块。每个脚本子模块中的批处理语句或者全部生效,或者全部回退。在进行断点续做时,以脚本子模块为单位确定断点的脚本子模块。
S120、响应于批处理指令,若批处理指令为断点续做,则根据预先记录的脚本子模块的控制信息确定未执行完毕的目标脚本子模块。
若脚本子模块全部执行完毕,则按照逻辑顺序执行下一个脚本子模块。执行脚本子模块时,从脚本子模块包含的第一行代码开始,按照代码顺序依次执行脚本子模块中的代码。脚本子模块运行完毕后,记载包括脚本子模块执行状态的控制信息。
当触发批处理指令时,判断批处理执行是断点续做还是非断点续做。如果是断点续做,则根据脚本子模块的控制信息获取每个脚本子模块的执行情况。如果之前存在断点,则断点所在的目标脚本子模块的执行状态为未完成。目标脚本子模块的上一个脚本子模块的执行状态为已完成。通过比较执行状态可确定目标脚本子模块。
S130、根据目标子模块依次执行剩余未执行的脚本子模块,根据执行情况修改脚本子模块的控制信息。
根据脚本子模块的逻辑顺序,从目标脚本子模块开始,依次执行剩余未执行的脚本子模块。直至执行完全部脚本。当目标脚本子模块执行完毕后,将目标脚本子模块的执行状态修改为已完成。
本申请提供的数据批处理脚本的处理方法,根据数据批处理脚本确定多个脚本子模块;响应于批处理指令,若批处理指令为断点续做,则根据预先记录的脚本子模块的控制信息确定未执行完毕的目标脚本子模块;根据目标子模块依次执行剩余未执行的脚本子模块,根据执行情况修改脚本子模块的控制信息。相对于目前断点续做稳定性差的问题,本发明能够将数据批处理脚本划分为多个脚本子模块,断点续做时,以脚本子模块为单位确定目标脚本子模块。脚本子模块的起始位置固定,且每个脚本子模块的代码运行流程。脚本子模块实现对数据批处理脚本的合理分割,保证断点续做起始位置为脚本子模块的起始脚本,不会出现从脚本子模块中间进行断点续做,导致断点续做不稳定的情况。断点续做时,从目标脚本子模块的起始脚本开始还行,依次执行剩余未执行的脚本子模块,完成断点续做,提高断点续做稳定性。
图2为本申请实施例提供的数据批处理脚本的处理方法的流程图二。如图2所示,数据批处理脚本的处理方法,包括如下步骤:
S210、根据数据批处理脚本确定多个脚本子模块。
S220、依次执行脚本子模块,记录脚本子模块的控制信息,控制信息包括执行情况,执行情况用于表示脚本子模块是否执行完毕。
在首次触发执行脚本时,从第一个脚本子模块开始依次执行脚本子模块。记录执行脚本子模块的时间信息、脚本标识信息以及执行情况等控制信息。
S230、响应于批处理指令,若批处理指令为断点续做,则根据预先记录的脚本子模块的控制信息确定未执行完毕的目标脚本子模块。
S240、根据目标子模块依次执行剩余未执行的脚本子模块,根据执行情况修改脚本子模块的控制信息。
本发明实施例提供的数据批处理脚本的处理,能够根据脚本子模块的逻辑关系依次执行脚本子模块,并记录脚本子模块的控制信息。通过控制信息能够准确记载脚本子模块的运行情况,提高断点续做准确性。
图3为本申请实施例提供的数据批处理脚本的处理方法的流程图三。如图3所示,数据批处理脚本的处理方法,包括如下步骤:
S310、根据数据批处理脚本确定多个脚本子模块。
S320、依次执行脚本子模块,根据控制表的字段和脚本子模块的实际运行情况,生成用于记载脚本子模块运行情况的记录。
其中,控制表的字段包括:数据批处理脚本标识字段、跑批业务日期字段、脚本子模块标识字段和执行情况字段。
进一步的,控制表的字段还包括:跑批业务时间字段。根据控制表的字段和脚本子模块的实际运行情况,生成用于记载脚本子模块运行情况的记录,还包括:根据脚本子模块的计划执行时间确定跑批业务时间字段。
进一步的,控制表的字段还包括断点续生效状态字段。根据控制表的字段和脚本子模块的实际运行情况,生成用于记载脚本子模块运行情况的记录,还包括:根据批处理指令的类型,确定断点续生效状态字段。
示例性的,控制表包含的字段如表1所示,
表1
其中,数据批处理脚本标识字段为批处理脚本名,用于存放数据批处理各脚本的名称。
跑批业务日期字段用于登记各脚本按照批处理计划应当执行的日期。可以只保存在当天以及当天之前执行批处理操作的日期,而不保存还未执行的将来的日期信息,避免数据量过大。格式按实际情况而定,例如可用YYYY-MM-DD。
跑批业务时间字段用于登记各脚本按照批处理计划应当执行的时间。可以只保存在当天以及当天之前按照批处理计划应当执行脚本的规定时间,而不保存还未执行的将来的时间信息,避免数据量过大。
跑批业务时间字段与跑批业务日期字段结合后,用于唯一标识批处理脚本的执行批次,例如某脚本按规定是在特定业务日期的特定时间执行,则根据“批处理脚本名”+“跑批业务日期”+“跑批业务时间”+“生效状态”可确定该脚本当前有效的执行批次。执行断点续做操作时可以具体的执行批次进行操作。跑批业务时间字段的格式按实际情况而定,例如可用HH:MM:SS(小时:分钟:秒)。
批处理作业可以仅在规定的跑批业务日期执行,而不依赖于具体的时间。例如当业务日期符合批处理计划的日期时,只要依赖的数据来源准备就绪就可以执行批处理,而不必等到特定的时间点再执行。此时可以将跑批业务时间字段赋值为一个特殊值,例如“99:99:99”(小时:分钟:秒),用以表示此栏位并不作为真实时间来使用。
脚本子模块标识又称“子模块编号”,当脚本内部的数据加工语句按照不同业务逻辑划分成不同子模块后,须对各脚本子模块赋予不同编号。脚本子模块标识字段用于唯一识别同一个批处理脚本内的不同子模块。控制表中的不同记录,当“批处理脚本名”+“跑批业务日期”+“跑批业务时间”+“生效状态”相同时,脚本子模块标识字段应当不同。换言之,控制表的联合主键可以是:“批处理脚本名”+“跑批业务日期”+“跑批业务时间”+“子模块编号”+“生效状态”。“子模块编号”的编号规则可以用数字、字母、特殊字符,或多种字符的组合(例如MOD_1、MOD_2...),采用的编号方式在能够区别不同子模块的前提下,如果也有助于理解子模块的功能就最好了。
执行情况字段,对于控制表中每组确定的“批处理脚本名”+“跑批业务日期”+“跑批业务时间”+“子模块编号”,如果该组记录的“生效状态”字段是“有效”,一旦某个脚本子模块成功提交了数据库事务,该模块在控制表中对应的“批处理脚本名”+“跑批业务日期”+“跑批业务时间”+“子模块编号”这笔有效记录,其“执行情况”字段值在脚本以非断点续做方式执行时,会初始化为“未完成”(可以根据实际需要用特定的数字或字符表示“未完成”和“已完成”),并且会在该子模块对应的数据库事务提交成功后被赋值为“已完成”。当脚本以断点续做方式执行时,对于控制表中每一笔有效的(“生效状态”为“有效”)联合主键:“批处理脚本名”+“跑批业务日期”+“跑批业务时间”+“子模块编号”+“生效状态”,如果对应的“执行情况”是“已完成”就跳过不再执行子模块中的数据加工语句,而只执行“执行情况”为“未完成”的子模块依序进行处理。
生效状态字段,使用“有效”和“无效”表示控制表中的记录是否可用于实现断点续做功能:“批处理脚本名”+“跑批业务日期”+“跑批业务时间”+“子模块编号”。只有“有效”的记录才可以用于实现脚本的断点续做功能。实际存储于数据库中的字段值可以用特定的数字或字符来表示“有效”或“无效”,如’0’表示无效,’1’表示有效。
S330、响应于批处理指令,若批处理指令为断点续做,则根据预先记录的脚本子模块的控制信息确定未执行完毕的目标脚本子模块。
S340、根据目标子模块依次执行剩余未执行的脚本子模块,根据执行情况修改脚本子模块的控制信息。
示例性的,假设控制表内容如表2所示。
表2
脚本1用于数据加工的语句依序分为数据准备、数据处理、数据复制这三个子模块。该脚本在每个业务日期中,只要依赖的来源数据都准备就绪了就允许执行,而不限定于特别的时间点,所以控制表中“跑批业务日期”为’2022-10-09’的三条有效记录对应的“跑批业务时间”都为’99:99:99’,并且这三条记录对应的“执行情况”字段都是’1’,表示三个子模块对应的数据加工处理都已经成功提交了数据库事务。
“跑批业务日期”为’2022-10-09’的三条记录是在第一次执行“跑批业务日期”为’2022-10-09’的脚本时,在执行所有数据加工语句之前就新增到控制表里的,初始化时的这三条记录“执行情况”字段都为0-未完成。该脚本在首次执行后,如果以非断点续做方式再次执行的话,每次在执行数据加工语句之前都会先将控制表中该“跑批业务日期”下已有的三条记录的“生效状态”置为0-无效,然后重新新增三条初始化记录到控制表中,新增的这三条初始化记录“执行情况”字段都为0-未完成。当脚本中三个子模块都成功提交事务后,才把之前该“跑批业务日期”下“生效状态”置为0-无效的三条记录删除,让控制表中只保留该“跑批业务日期”下最近一次各脚本子模块的执行情况。
将原有的三条记录置为0-无效,等脚本全部执行完后才删除无效记录,可以应对在开始执行各脚本子模块前脚本突然执行中断的情况。在此情况下因为控制表中依然存有上一次各模块的记录,只是“生效状态”被置为0-无效,此时只要将“生效状态”重置为1-有效,就能让控制表正常发挥作用。
而“跑批业务日期”为’2022-10-10’的三条有效记录中,只有子模块数据准备脚本子模块对应的“执行情况”字段都是’1’,表示只有子模块数据准备脚本子模块执行成功,而另外两个子模块均未成功提交数据库事务,没有执行成功。所以在以断点续做方式再次执行’2022-10-10’这个日期的脚本时,执行流程如下:
(1)脚本在执行子模块数据准备脚本子模块前,取出控制表中“批处理脚本名”为’脚本1’,且“跑批业务日期”为’2022-10-10’,且“子模块编号”为’数据准备脚本子模块’,且“生效状态”为1-有效的那笔记录,根据该笔记录的“执行情况”为1,可知该子模块之前已经成功完成了’2022-10-10’这天的数据加工,所以脚本会跳过子模块数据准备脚本子模块的相关语句,执行在此之后的语句。
(2)按照脚本中代码顺序,子模块数据准备脚本子模块之后是子模块数据处理脚本子模块。类似于处理数据准备脚本子模块的方式,脚本根据控制表中的记录,得知子模块数据处理脚本子模块的“执行情况”为0,也就是还未完成’2022-10-10’这天的数据加工,所以脚本会执行子模块数据处理脚本子模块中数据加工语句,并在成功提交数据库事务后,将控制表中“跑批业务日期”为’2022-10-10’,“子模块编号”为’数据处理脚本子模块’,且“生效状态”为1的那笔记录的“执行情况”赋值为1,表示已完成。在数据处理脚本子模块之后的子模块数据复制脚本子模块的处理也是遵循同样的方式。当各脚本子模块的数据加工语句都成功提交事务后,对应的“执行情况”就全部变为1。
(3)如果脚本中所有子模块的“执行情况”已全部为1,此时并不存在所谓的“断点”,则即使以断点续做方式再次执行,脚本也会跳过所有的子模块,并不会实际执行数据加工语句。
可选的,对于之前执行过程中被中断的脚本,如果不希望重复执行之前已经执行完毕的数据加工语句,可采用断点续做方式。此方式下,在按照脚本中代码顺序依序执行每个子模块前,先判断批处理控制表中对应跑批业务日期(如有必要可加上跑批业务时间的限定)下该脚本子模块的执行情况,会跳过已完成的脚本子模块,只执行未完成的脚本子模块。以实现脚本在中断后再次执行时,不必重复执行已成功提交数据库事务的数据加工语句,保证脚本执行的时效性。
可选的,对于某个跑批业务日期(如有必要可加上跑批业务时间的限定),如果是第一次执行数据批处理脚本,或者虽然之前执行过相同跑批业务日期下的脚本,但依然要再次执行脚本中所有的数据加工语句,都可以采用非断点续做方式。此方式下,脚本会从起始位置执行所有脚本子模块中的数据加工语句,而不会通过批处理控制表只选择执行“执行情况”为“未完成”的脚本子模块。
本发明实施例提供的数据批处理脚本的处理,能够通过控制表中的字段对脚本子模块的执行时间、执行状态等控制信息进行记录。根据控制表中记录的控制信息能够准确的实现断点续做,提高断点续做稳定性。
图4为本申请实施例提供的数据批处理脚本的处理方法的流程图四。如图4所示,数据批处理脚本的处理方法,包括如下步骤:
S410、根据数据批处理脚本确定多个脚本子模块。
S420、依次执行脚本子模块,根据控制表的字段和脚本子模块的实际运行情况,生成用于记载脚本子模块运行情况的记录。
S430、响应于批处理指令,若批处理指令为断点续做,获取与当前脚本匹配的控制表。
读取与当前脚本配套的批处理控制表信息。控制表中可能有该脚本在不同跑批业务日期的信息,读取对应当前跑批业务日期的记录。可根据“批处理脚本名”+“跑批业务日期”+“跑批业务时间”,并且“生效状态”为“有效”的记录,按此方式找到的记录包括之前已经执行完毕的,以及还未执行的所有子模块信息。
S440、根据生效状态字段和执行情况字段确定目标脚本子模块;从目标脚本子模块开始依次执行剩余未执行的脚本子模块。
S450、根据目标子模块依次执行剩余未执行的脚本子模块。
S460、当目标脚本子模块执行完毕时,修改执行情况字段为已完成。
从脚本的开始从头执行语句。在执行各脚本子模块中的数据加工语句前,脚本会根据控制表中对应该脚本子模块的信息进行判断,如果“执行情况”字段值为1(已完成),则跳过该脚本子模块的语句往下继续执行。直至遇到“执行情况”字段值为0(未完成)的目标脚本子模块,就执行该目标脚本子模块中的语句。待该目标脚本子模块语句执行完毕,成功提交数据库事务后再将控制表中对应该目标脚本子模块的记录的“执行情况”字段值置为1(已完成),再继续执行后面剩余未执行的脚本子模块的语句。待所有脚本子模块的语句都执行完毕后,各脚本子模块在控制表中记录的“执行情况”字段值都置为1(已完成)。
S470、根据生效状态字段更新控制表。
清理批处理控制表中生效状态被置为“无效”的记录。当所有脚本子模块都成功提交数据库事务后,各脚本子模块在批处理控制表中对应的有效记录的“执行情况”都被置为1(已完成)。可以将控制表中对应的“批处理脚本名”+“跑批业务日期”+“跑批业务时间”所涉及的“生效状态”为“无效”的记录全部删除掉。这些记录是之前执行脚本时生成的记录,在脚本已经重新成功执行完毕后就可以从控制表中清理掉,使控制表中只保留对应脚本最近一次执行情况的记录。
如果在脚本执行过程中发生中断,导致部分脚本子模块未能成功提交数据库事务,则未成功执行的脚本子模块在控制表中的“执行情况”字段值依然是0(未完成)。在后续再次以断点续做方式再次执行脚本时,脚本会根据控制表识别出未完成的脚本子模块并执行。
当发生脚本执行过程中被中断的情况,在脚本末尾处,用于清理批处理控制表中生效状态为“无效”记录的语句就不会被执行,“无效”记录将继续暂存在控制表中,等待后续脚本被成功执行完毕后再清理。
本发明实施例提供的数据批处理脚本的处理方法,能够通过控制表中记载的控制信息准确的确定目标脚本子模块,提高断点续做准确性。
图5为本申请实施例提供的数据批处理脚本的处理方法的流程图五。如图5所示,数据批处理脚本的处理方法,包括如下步骤:
S510、根据数据批处理脚本确定多个脚本子模块。
S520、依次执行脚本子模块,根据控制表的字段和脚本子模块的实际运行情况,生成用于记载脚本子模块运行情况的记录。
将批处理控制表中在之前执行时生成的子模块记录置为无效。在刚开始执行脚本时,会到批处理控制表中,根据“批处理脚本名”+“跑批业务日期”+“跑批业务时间”,找出所有待执行子模块的记录,并把记录的“生效状态”都置为“无效”,记录暂时保留在控制表里,等所有子模块都成功执行完毕后再删除“无效”记录。如果根据“批处理脚本名”+“跑批业务日期”+“跑批业务时间”找不到待执行子模块的记录,说明该脚本在指定的“跑批业务日期”+“跑批业务时间”下是第一次执行批处理,控制表中还没有相关记录,则不必执行将“生效状态”置为“无效”的操作。
S530、响应于批处理指令,若批处理指令为断点续做,则根据预先记录的脚本子模块的控制信息确定未执行完毕的目标脚本子模块。
S540、根据目标子模块依次执行剩余未执行的脚本子模块,根据执行情况修改脚本子模块的控制信息。
S550、响应于批处理指令,若批处理指令为非断点续做,设置控制表中之前已生成记录的生效状态为无效。
S560、初始化与当前脚本匹配的控制表。
初始化与当前脚本配套的批处理控制表信息。根据指定的“批处理脚本名”+“跑批业务日期”+“跑批业务时间”,往批处理控制表中新增各脚本子模块的初始化记录,新增记录的“执行情况”字段值为0,表示“未完成”,“生效状态”字段值为1,表示“有效”。
S570、依次执行脚本子模块,当脚本子模块执行完毕时,执行情况字段配合为已完成。
按照脚本中代码的顺序,从第1个脚本子模块开始依序执行,当1个脚本子模块中的数据加工语句都处理完毕,并且数据库事务成功提交后,将批处理控制表中对应的“批处理脚本名”+“跑批业务日期”+“跑批业务时间”+“子模块编号”,并且“生效状态”为1的这笔记录的“执行情况”字段值置为1,表示“已完成”。后续如果以断点续做方式再次执行该脚本时,就可以跳过这个脚本子模块不再重复加工数据。
同理,后续各脚本子模块也是按此方式执行数据加工语句并成功提交数据库事务后,更新控制表中对应记录的“执行情况”字段值为“已完成”。
S580、清理控制表中生效状态字段为无效的记录。
清理批处理控制表中生效状态被置为“无效”的记录。当所有脚本子模块都成功提交数据库事务后,各脚本子模块在批处理控制表中对应的有效记录的“执行情况”都被置为“已完成”。此时可以把控制表中对应的“批处理脚本名”+“跑批业务日期”+“跑批业务时间”所涉及的“生效状态”为“无效”的记录都删除掉。记录是之前执行脚本时生成的记录,在脚本已经重新成功执行完毕后就可以从控制表中清理掉,使控制表中只保留对应脚本最近一次执行情况的记录。
如果在脚本执行过程中发生中断,导致部分脚本子模块未能成功提交数据库事务,则未成功执行的子模块在控制表中的“执行情况”字段值依然保持“未完成”。在后续以断点续做方式再次执行脚本时,脚本会根据控制表识别出未完成的子模块并执行。
当发生脚本执行过程中被中断的情况,在脚本末尾处,用于清理批处理控制表中生效状态为“无效”记录的语句就不会被执行,“无效”记录将继续暂存在控制表中,等待后续脚本被成功执行完毕后再清理。
本发明实施例提供的数据批处理脚本的处理方法能够通过控制表中记载的控制信息准确的确定目标脚本子模块,提高非断点续做准确性。
本申请实施例还提供了一种数据批处理脚本的处理方法,包括如下步骤:
S601、根据业务功能对数据批处理脚本进行划分,得到多个脚本子模块。
其中,每个脚本子模块用于进行一个数据加工步骤
S602、依次执行脚本子模块,根据控制表的字段和脚本子模块的实际运行情况。
其中,控制表的字段包括:数据批处理脚本标识字段、跑批业务日期字段、脚本子模块标识字段和执行情况字段。
进一步的,控制表的字段还包括:跑批业务时间字段。根据脚本子模块的计划执行时间确定跑批业务时间字段。
进一步的,控制表的字段还包括断点续生效状态字段。根据批处理指令的类型,确定断点续生效状态字段。
S603、响应于批处理指令,若批处理指令为断点续做,若批处理指令为断点续做,获取与当前脚本匹配的控制表;根据生效状态字段和执行情况字段确定目标脚本子模块;从目标脚本子模块开始依次执行剩余未执行的脚本子模块。
S604、当目标脚本子模块执行完毕时,修改执行情况字段为已完成。
S605、根据生效状态字段更新控制表。
S606、响应于批处理指令,若批处理指令为非断点续做,设置控制表中之前已生成记录的生效状态为无效;初始化与当前脚本匹配的控制表。
S607、依次执行脚本子模块,当脚本子模块执行完毕时,执行情况字段配合为已完成;清理控制表中生效状态字段为无效的记录。
本发明实施例提供了批处理脚本的多种执行方式。既可以将所有数据加工语句全部执行(非断点续做方式),也可以只执行脚本上次被中断时未成功提交数据库事务的数据加工语句(断点续做方式)。在采用断点续做方式时,由于只执行上次脚本中断时未执行成功的数据加工语句,因此能有效缩短脚本被中断后再次执行的耗时,保证数据加工的时效性。断点续做对应的脚本运行机制,提供了可以深入到脚本内部各子模块对执行情况进行细化跟踪的手段,有助于排查系统运行故障,确保系统稳定运行。
图6为本申请实施例提供的数据批处理脚本的处理装置的结构示意图。如图6所示,该数据批处理脚本的处理装置,包括:子模块划分模块71、断点续做响应模块72和断点续做执行模块73。
子模块划分模块71,用于根据数据批处理脚本确定多个脚本子模块;
断点续做响应模块72,用于响应于批处理指令,若批处理指令为断点续做,则根据预先记录的脚本子模块的控制信息确定未执行完毕的目标脚本子模块;
断点续做执行模块73,用于根据目标子模块依次执行剩余未执行的脚本子模块;根据执行情况修改脚本子模块的控制信息。
在一些实施例中,子模块划分模块71用于:
根据业务功能对数据批处理脚本进行划分,得到多个脚本子模块,每个脚本子模块用于进行一个数据加工步骤。
在一些实施例中,还包括脚本子模块执行模块,脚本子模块执行模块用于:
依次执行脚本子模块,记录脚本子模块的控制信息,控制信息包括执行情况,执行情况用于表示脚本子模块是否执行完毕。
在一些实施例中,断点续做执行模块73用于:
根据控制表的字段和脚本子模块的实际运行情况,生成用于记载脚本子模块运行情况的记录;
控制表的字段包括:数据批处理脚本标识字段、跑批业务日期字段、脚本子模块标识字段和执行情况字段。
在一些实施例中,控制表的字段还包括:跑批业务时间字段;断点续做执行模块73还用于:
根据脚本子模块的计划执行时间确定跑批业务时间字段。
在一些实施例中,控制表的字段还包括断点续生效状态字段;断点续做执行模块73还用于:
根据批处理指令的类型,确定断点续生效状态字段。
在一些实施例中,断点续做响应模块72用于:
若批处理指令为断点续做,获取与当前脚本匹配的控制表;
根据生效状态字段和执行情况字段确定目标脚本子模块;
从目标脚本子模块开始依次执行剩余未执行的脚本子模块;
相应的,根据执行情况修改脚本子模块的控制信息,包括:
当目标脚本子模块执行完毕时,修改执行情况字段为已完成;
根据生效状态字段更新控制表。
在一些实施例中,如图7所示,还包括非断点续做处理模块74,非断点续做处理模块74用于:
响应于批处理指令,若批处理指令为非断点续做,设置控制表中之前已生成记录的生效状态为无效;
初始化与当前脚本匹配的控制表;
依次执行脚本子模块,当脚本子模块执行完毕时,执行情况字段配合为已完成;
清理控制表中生效状态字段为无效的记录。
本申请提供的数据批处理脚本的处理装置,子模块划分模块71,用于根据数据批处理脚本确定多个脚本子模块;断点续做响应模块72,用于响应于批处理指令,若批处理指令为断点续做,则根据预先记录的脚本子模块的控制信息确定未执行完毕的目标脚本子模块;断点续做执行模块73,用于根据目标子模块依次执行剩余未执行的脚本子模块;根据执行情况修改脚本子模块的控制信息。相对于目前断点续做稳定性差的问题,本发明能够将数据批处理脚本划分为多个脚本子模块,断点续做时,以脚本子模块为单位确定目标脚本子模块。脚本子模块的起始位置固定,且每个脚本子模块的代码运行流程。脚本子模块实现对数据批处理脚本的合理分割,保证断点续做起始位置为脚本子模块的起始脚本,不会出现从脚本子模块中间进行断点续做,导致断点续做不稳定的情况。断点续做时,从目标脚本子模块的起始脚本开始还行,依次执行剩余未执行的脚本子模块,完成断点续做,提高断点续做稳定性。
本申请实施例提供的数据批处理脚本的处理装置,可用于执行上述实施例中数据批处理脚本的处理方法的技术方案,其实现原理和技术效果类似,在此不再赘述。
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,断点续做执行模块73可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上断点续做执行模块73的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
图8为本申请实施例提供的电子设备的结构示意图。如图8所示,该电子设备可以包括:收发器81、处理器82、存储器83。
处理器82执行存储器存储的计算机执行指令,使得处理器82执行上述实施例中的方案。处理器82可以是通用处理器,包括中央处理器CPU、网络处理器(network processor,NP)等;还可以是数字信号处理器DSP、专用集成电路ASIC、现场可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
存储器83通过系统总线与处理器82连接并完成相互间的通信,存储器83用于存储计算机程序指令。
收发器81可以用于与客户端进行数据交互。
系统总线可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。收发器用于实现数据库访问装置与其他计算机(例如客户端、读写库和只读库)之间的通信。存储器可能包含随机存取存储器(randomaccess memory,RAM),也可能还包括非易失性存储器(non-volatile memory)。
本申请实施例提供的电子设备,可以是上述实施例的服务器。
本申请实施例还提供一种运行指令的芯片,该芯片用于执行上述实施例中数据批处理脚本的处理方法的技术方案。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行上述实施例数据批处理脚本的处理方法的技术方案。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序,其存储在计算机可读存储介质中,至少一个处理器可以从计算机可读存储介质读取计算机程序,至少一个处理器执行计算机程序时可实现上述实施例中数据批处理脚本的处理方法的技术方案。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (19)
1.一种数据批处理脚本的处理方法,其特征在于,包括:
根据数据批处理脚本确定多个脚本子模块;
响应于批处理指令,若批处理指令为断点续做,则根据预先记录的脚本子模块的控制信息确定未执行完毕的目标脚本子模块;
根据所述目标子模块依次执行剩余未执行的脚本子模块,根据执行情况修改所述脚本子模块的控制信息。
2.根据权利要求1所述的方法,其特征在于,所述根据数据批处理脚本确定多个脚本子模块,包括:
根据业务功能对数据批处理脚本进行划分,得到多个脚本子模块,每个脚本子模块用于进行一个数据加工步骤。
3.根据权利要求1所述的方法,其特征在于,在响应于批处理指令之前,还包括:
依次执行所述脚本子模块,记录所述脚本子模块的控制信息,所述控制信息包括执行情况,所述执行情况用于表示脚本子模块是否执行完毕。
4.根据权利要求3所述的方法,其特征在于,所述记录所述脚本子模块的控制信息,包括:
根据控制表的字段和所述脚本子模块的实际运行情况,生成用于记载所述脚本子模块运行情况的记录;
所述控制表的字段包括:数据批处理脚本标识字段、跑批业务日期字段、脚本子模块标识字段和执行情况字段。
5.根据权利要求4所述的方法,其特征在于,所述控制表的字段还包括:跑批业务时间字段;所述根据控制表的字段和所述脚本子模块的实际运行情况,生成用于记载所述脚本子模块运行情况的记录,还包括:
根据所述脚本子模块的计划执行时间确定跑批业务时间字段。
6.根据权利要求5所述的方法,其特征在于,所述控制表的字段还包括断点续生效状态字段;所述根据控制表的字段和所述脚本子模块的实际运行情况,生成用于记载所述脚本子模块运行情况的记录,还包括:
根据批处理指令的类型,确定断点续生效状态字段。
7.根据权利要求6所述的方法,其特征在于,若批处理指令为断点续做,根据预先记录的脚本子模块的控制信息确定未执行完毕的目标脚本子模块,包括:
若批处理指令为断点续做,获取与当前脚本匹配的控制表;
根据生效状态字段和执行情况字段确定目标脚本子模块;
从所述目标脚本子模块开始依次执行剩余未执行的脚本子模块;
相应的,根据执行情况修改所述脚本子模块的控制信息,包括:
当所述目标脚本子模块执行完毕时,修改执行情况字段为已完成;
根据生效状态字段更新所述控制表。
8.根据权利要求6所述的方法,其特征在于,在根据数据批处理脚本确定多个脚本子模块之后,还包括:
响应于批处理指令,若批处理指令为非断点续做,设置所述控制表中之前已生成记录的生效状态为无效;
初始化与当前脚本匹配的控制表;
依次执行脚本子模块,当脚本子模块执行完毕时,执行情况字段配合为已完成;
清理所述控制表中生效状态字段为无效的记录。
9.一种数据批处理脚本的处理装置,其特征在于,包括:
子模块划分模块,用于根据数据批处理脚本确定多个脚本子模块;
断点续做响应模块,用于响应于批处理指令,若批处理指令为断点续做,则根据预先记录的脚本子模块的控制信息确定未执行完毕的目标脚本子模块;
断点续做执行模块,用于根据所述目标子模块依次执行剩余未执行的脚本子模块;根据执行情况修改所述脚本子模块的控制信息。
10.根据权利要求9所述的装置,其特征在于,所述子模块划分模块用于:
根据业务功能对数据批处理脚本进行划分,得到多个脚本子模块,每个脚本子模块用于进行一个数据加工步骤。
11.根据权利要求9所述的装置,其特征在于,还包括脚本子模块执行模块,所述脚本子模块执行模块用于:
依次执行所述脚本子模块,记录所述脚本子模块的控制信息,所述控制信息包括执行情况,所述执行情况用于表示脚本子模块是否执行完毕。
12.根据权利要求11所述的装置,其特征在于,所述断点续做执行模块用于:
根据控制表的字段和所述脚本子模块的实际运行情况,生成用于记载所述脚本子模块运行情况的记录;
所述控制表的字段包括:数据批处理脚本标识字段、跑批业务日期字段、脚本子模块标识字段和执行情况字段。
13.根据权利要求12所述的装置,其特征在于,所述控制表的字段还包括:跑批业务时间字段;所述断点续做执行模块还用于:
根据所述脚本子模块的计划执行时间确定跑批业务时间字段。
14.根据权利要求13所述的装置,其特征在于,所述控制表的字段还包括断点续生效状态字段;所述断点续做执行模块还用于:
根据批处理指令的类型,确定断点续生效状态字段。
15.根据权利要求14所述的装置,其特征在于,所述断点续做响应模块用于:
若批处理指令为断点续做,获取与当前脚本匹配的控制表;
根据生效状态字段和执行情况字段确定目标脚本子模块;
从所述目标脚本子模块开始依次执行剩余未执行的脚本子模块;
相应的,根据执行情况修改所述脚本子模块的控制信息,包括:
当所述目标脚本子模块执行完毕时,修改执行情况字段为已完成;
根据生效状态字段更新所述控制表。
16.根据权利要求14所述的装置,其特征在于,还包括非断点续做处理模块,所述非断点续做处理模块用于:
响应于批处理指令,若批处理指令为非断点续做,设置所述控制表中之前已生成记录的生效状态为无效;
初始化与当前脚本匹配的控制表;
依次执行脚本子模块,当脚本子模块执行完毕时,执行情况字段配合为已完成;
清理所述控制表中生效状态字段为无效的记录。
17.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-8中任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-8中任一项所述的方法。
19.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被处理器执行时实现权利要求1-8中任一项所述的方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202310193701.0A CN116150277A (zh) | 2023-02-28 | 2023-02-28 | 数据批处理脚本的处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202310193701.0A CN116150277A (zh) | 2023-02-28 | 2023-02-28 | 数据批处理脚本的处理方法、装置、设备及存储介质 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN116150277A true CN116150277A (zh) | 2023-05-23 |
Family
ID=86356228
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202310193701.0A Pending CN116150277A (zh) | 2023-02-28 | 2023-02-28 | 数据批处理脚本的处理方法、装置、设备及存储介质 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN116150277A (zh) |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101303717A (zh) * | 1995-02-13 | 2008-11-12 | 英特特拉斯特技术公司 | 用于安全交易管理和电子权利保护的系统和方法 |
| CN101625749A (zh) * | 2009-08-18 | 2010-01-13 | 交通银行股份有限公司 | 一种联机批处理数据的方法、服务器及系统 |
| CN101788908A (zh) * | 2010-01-26 | 2010-07-28 | 浪潮(山东)电子信息有限公司 | 一种支持断点续航的批量数据处理方法 |
| CN110515718A (zh) * | 2019-08-30 | 2019-11-29 | 深圳前海微众银行股份有限公司 | 批量任务断点续作方法、装置、设备及介质 |
| CN110866834A (zh) * | 2019-10-12 | 2020-03-06 | 中国平安财产保险股份有限公司 | 批处理程序的执行方法及系统 |
| CN113051041A (zh) * | 2021-04-30 | 2021-06-29 | 中国银行股份有限公司 | 批量脚本断点续做的方法及装置、电子设备、存储介质 |
-
2023
- 2023-02-28 CN CN202310193701.0A patent/CN116150277A/zh active Pending
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101303717A (zh) * | 1995-02-13 | 2008-11-12 | 英特特拉斯特技术公司 | 用于安全交易管理和电子权利保护的系统和方法 |
| CN101625749A (zh) * | 2009-08-18 | 2010-01-13 | 交通银行股份有限公司 | 一种联机批处理数据的方法、服务器及系统 |
| CN101788908A (zh) * | 2010-01-26 | 2010-07-28 | 浪潮(山东)电子信息有限公司 | 一种支持断点续航的批量数据处理方法 |
| CN110515718A (zh) * | 2019-08-30 | 2019-11-29 | 深圳前海微众银行股份有限公司 | 批量任务断点续作方法、装置、设备及介质 |
| CN110866834A (zh) * | 2019-10-12 | 2020-03-06 | 中国平安财产保险股份有限公司 | 批处理程序的执行方法及系统 |
| CN113051041A (zh) * | 2021-04-30 | 2021-06-29 | 中国银行股份有限公司 | 批量脚本断点续做的方法及装置、电子设备、存储介质 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN112199366B (zh) | 数据表处理方法、装置及设备 | |
| CN110941502A (zh) | 消息处理方法、装置、存储介质及设备 | |
| CN108255620B (zh) | 一种业务逻辑处理方法、装置、业务服务器及系统 | |
| WO2020253045A1 (zh) | 配置化的数据转发异常补处理方法、装置及可读存储介质 | |
| CN111522881B (zh) | 业务数据处理方法、装置、服务器及存储介质 | |
| CN112835885A (zh) | 一种分布式表格存储的处理方法、装置及系统 | |
| CN111049913A (zh) | 数据文件的传输方法及装置、存储介质、电子设备 | |
| CN119002767A (zh) | 信息处理方法、装置、设备和存储介质 | |
| CN108121774B (zh) | 一种数据表备份方法及终端设备 | |
| CN110765148B (zh) | 一种业务数据处理方法及装置 | |
| US5828890A (en) | System for interrupting program operation when an out-of-range value is encountered to correct a data value | |
| CN114879964A (zh) | 代码生成方法及装置 | |
| CN113986941A (zh) | 事务批量处理方法及装置 | |
| CN112256672B (zh) | 数据库变更审批方法及装置 | |
| CN111367934B (zh) | 数据一致性的检验方法、装置、服务器和介质 | |
| CN117893338A (zh) | 数据处理方法、装置、设备及存储介质 | |
| CN112596783B (zh) | 代码自动合并方法、装置、计算机设备和存储介质 | |
| CN116150277A (zh) | 数据批处理脚本的处理方法、装置、设备及存储介质 | |
| CN120066970A (zh) | 基于软硬件的寄存器配置方法、电子设备和介质 | |
| CN119807220A (zh) | 用于生成结构化查询语句的方法、装置、设备和存储介质 | |
| CN113138990A (zh) | 一种数据血缘构建、追溯方法、装置及设备 | |
| CN117829123A (zh) | 用于处理文本的方法、装置、设备和介质 | |
| CN117557229A (zh) | 审批业务处理方法、装置、电子设备及存储介质 | |
| CN117076324A (zh) | 一种基于日志进行代码修复的方法、系统、设备和介质 | |
| CN116226085A (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 |