CN110633258B - 日志插入方法、装置、计算机装置及存储介质 - Google Patents
日志插入方法、装置、计算机装置及存储介质 Download PDFInfo
- Publication number
- CN110633258B CN110633258B CN201910727085.6A CN201910727085A CN110633258B CN 110633258 B CN110633258 B CN 110633258B CN 201910727085 A CN201910727085 A CN 201910727085A CN 110633258 B CN110633258 B CN 110633258B
- Authority
- CN
- China
- Prior art keywords
- command
- statement
- global variable
- annotation
- annotation statement
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
Abstract
本发明提供一种日志插入方法及相关设备。所述方法包括:设定任务配置文件;读取任务配置文件中的第一命令注释语句;根据第一命令注释语句的命令标识和命令参数初始化任务配置文件对应的全局变量组;读取任务配置文件中的第二命令注释语句,解析第二命令注释语句的命令标识和命令参数,根据第二命令注释语句的命令标识判断第二命令注释语句的类别;若第二命令注释语句的类别为插入命令注释语句,通过全局变量组将插入命令注释语句的命令参数插入日志表;读取任务配置文件中第二命令注释语句对应的SQL语句,执行SQL语句;若SQL语句执行失败,通过全局变量组将执行错误信息插入日志表。本发明能够提升将SQL语句执行错误信息插入日志表的效率。
Description
技术领域
本发明涉及日志技术领域,具体涉及一种日志插入方法、装置、计算机装置及计算机存储介质。
背景技术
普通SQL脚本文件以及存储过程,如果要插入日志表。需要手工写相应插入语句,增加开发复杂度。在数据库开发过程中,经常出现SQL语句执行失败的情况。为了记录SQL语句执行失败的日志信息,开发人员需要在SQL脚本文件或存储过程中插入报错语句,从而产生了额外的工作量,增加了开发复杂度。因此,需要一种能够简单高效地记录SQL语句执行失败的日志信息的方法。
发明内容
鉴于以上内容,有必要提出一种日志插入方法、装置、计算机装置及计算机存储介质,其可以提升将SQL语句执行错误信息插入日志表的效率。
本申请的第一方面提供一种日志插入方法,所述方法包括:
设定任务配置文件,所述任务配置文件包括第一命令注释语句,第二命令注释语句和与所述第二命令注释语句对应的SQL语句;
读取所述第一命令注释语句,解析所述第一命令注释语句的命令标识和命令参数;
根据所述第一命令注释语句的命令标识和命令参数初始化所述任务配置文件对应的全局变量组;
读取所述第二命令注释语句,解析所述第二命令注释语句的命令标识和命令参数,根据所述第二命令注释语句的命令标识判断所述第二命令注释语句的类别;
若所述第二命令注释语句的类别为插入命令注释语句,通过所述全局变量组将所述插入命令注释语句的命令参数插入日志表,所述插入命令注释语句的命令参数包括与所述插入命令注释语句对应的SQL语句的日志信息;
读取所述第二命令注释语句对应的SQL语句,执行所述SQL语句;
若所述SQL语句执行失败,生成所述SQL语句的执行错误信息,将所述SQL语句的执行错误信息赋值给所述全局变量组中所述执行错误信息对应的全局变量,通过所述全局变量组将所述执行错误信息插入所述日志表。
另一种可能的实现方式中,所述根据所述第一命令注释语句的命令标识和命令参数初始化所述任务配置文件对应的全局变量组包括:
将所述全局变量组中的全局变量初始化为空值;
查询预设的命令标识-全局变量表,判断所述全局变量组中是否包含所述第一命令注释语句的命令标识对应的全局变量;
若所述全局变量组中包含所述第一命令注释语句的命令标识对应的全局变量,则将所述第一命令注释语句的命令标识对应的命令参数赋值给所述全局变量组中所述第一命令注释语句的命令标识对应的全局变量。
另一种可能的实现方式中,所述通过所述全局变量组将所述插入命令注释语句的命令参数插入日志表包括:
查询预设的命令标识-全局变量表,确定所述全局变量组中所述插入命令注释语句的命令标识对应的全局变量;
将所述插入命令注释语句的命令参数赋值给所述全局变量组中所述插入命令注释语句的命令标识对应的全局变量;
根据所述全局变量组生成第一日志插入语句;
执行所述第一日志插入语句,将所述全局变量组中所述插入命令注释语句的命令标识对应的全局变量插入所述日志表。
另一种可能的实现方式中,所述生成所述SQL语句的执行错误信息包括:
将所述SQL语句的执行标识信息赋值为“false”;
判断所述SQL语句中的参数是否正确,若所述SQL语句中的参数不正确,生成第一执行错误信息;
判断所述SQL语句中的表是否正确,若所述SQL语句中的表不正确,生成第二执行错误信息;
若所述SQL语句中的参数正确且所述SQL语句中的表正确,生成第三执行错误信息。
另一种可能的实现方式中,所述通过所述全局变量组将所述执行错误信息插入所述日志表包括:
根据所述全局变量组生成第二日志插入语句;
执行所述第二日志插入语句,将所述全局变量中所述执行错误信息对应的全局变量插入所述日志表。
另一种可能的实现方式中,所述方法还包括:
若所述第二命令注释语句的类别为提交命令注释语句,则判断所述提交命令注释语句中的命令参数是否为“true”;
若所述提交命令注释语句中的命令参数为“true”,则提交所述SQL语句对应的数据库事务。
另一种可能的实现方式中,所述方法还包括:
若所述SQL语句执行失败,则判断所述第一命令注释语句中用于控制输出日志信息的命令参数是否为“true”;
若所述第一命令注释语句中用于控制输出日志信息的命令参数为“true”,则输出所述日志表中所述SQL语句的执行失败信息。
本申请的第二方面提供一种日志插入装置,所述装置包括:
设定模块,用于设定任务配置文件,所述任务配置文件包括第一命令注释语句,第二命令注释语句和与所述第二命令注释语句对应的SQL语句;
第一解析模块,用于读取所述第一命令注释语句,解析所述第一命令注释语句的命令标识和命令参数;
初始化模块,用于根据所述第一命令注释语句的命令标识和命令参数初始化所述任务配置文件对应的全局变量组;
第二解析模块,用于读取所述第二命令注释语句,解析所述第二命令注释语句的命令标识和命令参数,根据所述第二命令注释语句的命令标识判断所述第二命令注释语句的类别;
第一插入模块,用于若所述第二命令注释语句的类别为插入命令注释语句,通过所述全局变量组将所述插入命令注释语句的命令参数插入日志表,所述插入命令注释语句的命令参数包括与所述插入命令注释语句对应的SQL语句的日志信息;
第二插入模块,用于读取所述第二命令注释语句对应的SQL语句,执行所述SQL语句,若所述SQL语句执行失败,生成所述SQL语句的执行错误信息,将所述SQL语句的执行错误信息赋值给所述全局变量组中所述执行错误信息对应的全局变量,通过所述全局变量组将所述执行错误信息插入所述日志表。
本申请的第三方面提供一种计算机装置,所述计算机装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现所述日志插入方法。
本申请的第四方面提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述日志插入方法。
本发明设定任务配置文件,所述任务配置文件包括第一命令注释语句,第二命令注释语句和与所述第二命令注释语句对应的SQL语句;读取所述第一命令注释语句,解析所述第一命令注释语句的命令标识和命令参数;根据所述第一命令注释语句的命令标识和命令参数初始化所述任务配置文件对应的全局变量组;读取所述第二命令注释语句,解析所述第二命令注释语句的命令标识和命令参数,根据所述第二命令注释语句的命令标识判断所述第二命令注释语句的类别;若所述第二命令注释语句的类别为插入命令注释语句,通过所述全局变量组将所述插入命令注释语句的命令参数插入日志表,所述插入命令注释语句的命令参数包括与所述插入命令注释语句对应的SQL语句的日志信息;读取所述第二命令注释语句对应的SQL语句,执行所述SQL语句;若所述SQL语句执行失败,生成所述SQL语句的执行错误信息,将所述SQL语句的执行错误信息赋值给所述全局变量组中所述执行错误信息对应的全局变量,通过所述全局变量组将所述执行错误信息插入所述日志表。本发明能够提升将SQL语句执行错误信息插入日志表的效率。
附图说明
图1是本发明实施例提供的日志插入方法的流程图。
图2是本发明实施例提供的日志插入装置的结构图。
图3是本发明实施例提供的计算机装置的示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
优选地,本发明的日志插入方法应用在一个或者多个计算机装置中。所述计算机装置是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific IntegratedCircuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
所述计算机装置可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机装置可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
实施例一
图1是本发明实施例一提供的日志插入方法的流程图。所述日志插入方法应用于计算机装置。
本发明日志插入方法用于在日志表中插入SQL语句执行失败的日志信息。
如图1所示,所述日志插入方法包括:
S101,设定任务配置文件,所述任务配置文件包括第一命令注释语句、第二命令注释语句和SQL(Structured Query Language,结构化查询语言)语句,所述SQL语句与所述第二命令注释语句相对应。
在本实施例中,每个任务配置文件描述一个数据库操作任务,如将指定数据导入数据库。每个任务配置文件包括一个第一命令注释语句、多个第二命令注释语句,每个第二命令注释语句对应至少一个SQL语句。
在本实施例中,所述任务配置文件的结构要满足:所述第一命令注释语句为所述任务配置文件的首条语句,所述第二命令注释语句和与其对应的SQL语句相邻,并且所述第二命令注释语句在其对应的SQL语句之前。可以检测所述任务配置文件是否满足结构要求,若所述任务配置文件满足结构要求,则执行后续步骤。否则,若所述任务配置文件不满足结构要求,则流程结束。
每个第一命令注释语句或第二命令注释语句包括至少一个命令。在本实施例中,所述命令包括用于更新日志表的命令。用于更新日志表的命令可以包括“@task_name=XXX”、“@task_desc=XXX”、“@step_name=XXX”、“@step_desc=XXX”等。其中,“@task_name=XXX”用于设置任务名称,“@task_desc=XXX”用于设置任务描述,“@step_name=XXX”用于设置步骤名称,“@step_desc=XXX”用于设置步骤描述。
所述命令还包括用于控制SQL语句对应的数据库事务提交的命令。用于控制SQL语句对应的数据库事务提交的命令可以包括“@autocommit=true|false”,用于设置执行完SQL语句后是否提交该SQL语句对应的数据库事务。
在另一实施例中,所述命令还可以包括用于控制输出日志信息的命令。用于控制输出日志信息的命令可以为“@debug=true|false”,用于设置是否输出日志表中SQL语句的执行失败信息。
所述SQL语句用于实现数据库操作任务的具体业务逻辑。
可选的,所述任务配置文件还可以包括其他的注释语句。例如,所述任务配置文件还可以包括SQL语句注释语句,用于对所述任务配置文件中的SQL语句进行解释说明,以方便用户理解所述括SQL语句。
所述第一命令注释语句和所述第二命令注释语句中可以用注释识别字符标示所述第一命令注释语句和所述第二命令注释语句。例如,可以用注释识别字符“-”标示所述第一命令注释语句和所述第二命令注释语句。因此,若代码行包括注释识别字符,则所述代码行为第一命令注释语句或第二命令注释语句;若代码行不包括注释识别字符,则所述代码行为SQL语句。
所述第一命令注释语句和所述第二命令注释语句的命令识别字符可以相同也可以不同。例如,所述第一命令注释语句包括第一命令识别字符,所述第二命令注释语句包括第二命令识别字符。
可以用命令识别字符标示所述第一命令注释语句和所述第二命令注释语句中的命令。例如,可以用命令识别字符“-#”标示所述第一命令注释语句和所述第二命令注释语句中的命令。
S102,读取所述第一命令注释语句,解析所述第一命令注释语句的命令标识和命令参数。
在一实施例中,所述第一命令注释语句为所述任务配置文件的首条语句,则读取所述任务配置文件的首条语句。
或者,在另一实施例中,所述第一命令注释语句包括第一命令识别字符,则根据所述第一命令识别字符读取所述第一命令注释语句。
所述第一命令注释语句具有固定的格式,根据所述第一命令注释语句的格式解析所述第一命令注释语句的命令标识和命令参数。所述第一命令注释语句可以包括多个命令标识和多个命令参数,其中,命令标识和命令参数一一对应。
举例来说,第一命令注释语句为“@task_name=T001;@autocommit=true;@task_desc=每天备份一次用户表”。该第一命令注释语句包括命令“@task_name=T001”、“@autocommit=true”和“@task_desc=每天备份一次用户表”。命令“@task_name=T001”用于设置任务名称为T001,命令“@autocommit=true”用于设置执行完SQL语句后提交该SQL语句对应的数据库事务,命令“@task_desc=每天备份一次用户表”用于设置任务描述为“每天备份一次用户表”。字符“@”到字符“=”之间的字符串为命令标识,字符“=”之后分号“;”之前的为命令参数,解析得到第一命令注释语句的三个命令标识为“@task_name”、“@autocommit”、“@task_desc”,所述三个命令标识对应的三个命令参数分别为“T001”、“true”、“每天备份一次用户表”。
在一实施例中,所述第一命令注释语句包括用于控制输出日志信息的命令,例如包括“@debug=true”,则解析得到第一命令注释语句的命令标识为“@debug”,所述命令标识对应的命令参数为“true”。
S103,根据所述第一命令注释语句的命令标识和命令参数初始化所述任务配置文件对应的全局变量组。
在一具体实施例中,所述根据所述第一命令注释语句的命令标识和命令参数初始化所述任务配置文件对应的全局变量组包括:
将所述全局变量组中的全局变量初始化为空值;
查询预设的命令标识-全局变量表,判断所述全局变量组中是否包含所述第一命令注释语句的命令标识对应的全局变量;
若所述全局变量组中包含所述第一命令注释语句的命令标识对应的全局变量,则将所述第一命令注释语句的命令标识对应的命令参数赋值给所述全局变量组中所述第一命令注释语句的命令标识对应的全局变量。
举例来说,预设的命令标识-全局变量表为“@task_name-task_name;@autocommit-autocommit;@task_desc-task_desc”,表示命令标识“@task_name”、“@autocommit”、“@task_desc”对应的全局变量分别为“task_name”、“autocommit”、“task_desc”。将任务配置文件对应的全局变量组中的全局变量初始化为“task_name=null;autocommit=null;task_desc=null”。任务配置文件中的第一命令注释语句为“@task_name=T001;@autocommit=true;@task_desc=每天备份一次用户表”。任务配置文件对应的全局变量组中包含第一命令注释语句的命令标识“@task_name”对应的全局变量“task_name”,包含第一命令注释语句的命令标识“@autocommit”对应的全局变量“autocommit”,以及包含第一命令注释语句的命令标识“@task_desc”对应的全局变量“task_desc”。因此,将第一命令注释语句的命令标识“@task_name”对应的命令参数“T001”赋值给全局变量组中第一命令注释语句的命令标识对应的全局变量“task_name”,将第一命令注释语句的命令标识“@autocommit”对应的命令参数“true”赋值给全局变量组中第一命令注释语句的命令标识对应的全局变量“autocommit”,将第一命令注释语句的命令标识“@task_desc”对应的命令参数“每天备份一次用户表”赋值给全局变量组中第一命令注释语句的命令标识对应的全局变量“task_desc”,赋值后的全局变量组为“task_name=T001;autocommit=true;task_desc=每天备份一次用户表”。
S104,读取所述第二命令注释语句,解析所述第二命令注释语句的命令标识和命令参数,根据所述第二命令注释语句的命令标识判断所述第二命令注释语句的类别。
在一实施例中,所述第二命令注释语句包括第二命令识别字符,则根据所述第二命令识别字符读取所述第二命令注释语句。
所述第二命令注释语句具有固定的格式,根据所述第二命令注释语句的格式解析所述第二命令注释语句的命令标识和命令参数。所述第二命令注释语句可以包括多个命令标识和多个命令参数,其中,命令标识和命令参数一一对应。
所述根据所述第二命令注释语句的命令标识判断所述第二命令注释语句的类别包括:
若所述第二命令注释语句的命令标识为@step_name或@step_desc,则所述第二命令注释语句的类别为插入命令注释语句;
若所述第二命令注释语句的命令标识为@autocommit,则所述第二命令注释语句的类别为提交命令注释语句。
S105,若所述第二命令注释语句的类别为插入命令注释语句,通过所述全局变量组将所述插入命令注释语句的命令参数插入日志表,所述插入命令注释语句的命令参数包括与所述插入命令注释语句对应的SQL语句的日志信息。
在一具体实施例中,所述通过所述全局变量组将所述插入命令注释语句的命令参数插入日志表包括:
查询预设的命令标识-全局变量表,确定所述全局变量组中所述插入命令注释语句的命令标识对应的全局变量;
将所述插入命令注释语句的命令参数赋值给所述全局变量组中所述插入命令注释语句的命令标识对应的全局变量,其中所述插入命令注释语句的命令参数与所述插入命令注释语句的命令标识一一对应;
根据所述全局变量组生成第一日志插入语句;
执行所述第一日志插入语句,将所述全局变量组中所述插入命令注释语句的命令标识对应的全局变量插入所述日志表。
例如,插入命令注释语句为“@step_name=backup_table;@step_desc=备份表”。查询预设的命令标识-全局变量表,确定全局变量组中插入命令注释语句的命令标识对应的全局变量为“step_name=null;step_desc=null”。将插入命令注释语句的命令参数“backup_table”赋值给全局变量组中插入命令注释语句的命令标识“@step_name”对应的全局变量“step_name”,将插入命令注释语句的命令参数“备份表”赋值给全局变量组中插入命令注释语句的命令标识“@step_desc”对应的全局变量“step_desc”,赋值后的与插入命令注释语句的命令标识对应的全局变量为“step_name=backup_table;step_desc=备份表”。根据全局变量组“task_name=T001;autocommit=true;task_desc=每天备份一次用户表;step_name=backup_table;step_desc=备份表”生成第一日志插入语句“Insertinto etl_task_log(task_name,step_name,step_desc,start_time)values(T001,backup_table,’备份表’,now())”,其中“now()”为获取当前时间的函数。执行第一日志插入语句,将全局变量组中插入命令注释语句的命令标识对应的全局变量插入日志表。
S106,读取所述第二命令注释语句对应的SQL语句,执行所述SQL语句。
所述第二命令注释语句对应的SQL语句是不包括所述命令识别字符和所述注释识别字符的代码行。
执行所述SQL语句就是根据所述SQL语句对数据库进行操作,以实现所述任务配置文件描述的数据库操作任务,如将给定数据导入数据库中。
S107,若所述SQL语句执行失败,生成所述SQL语句的执行错误信息,将所述SQL语句的执行错误信息赋值给所述全局变量组中所述执行错误信息对应的全局变量,通过所述全局变量组将所述执行错误信息插入所述日志表。
在一具体实施例中,生成所述SQL语句的执行错误信息包括:
(1)将所述SQL语句的执行标识信息赋值为“false”。所述SQL语句的执行标识信息初始值为“true”,将所述SQL语句的执行标识信息赋值为“false”,表明所述SQL语句执行失败。
(2)判断所述SQL语句中的参数是否正确,若所述SQL语句中的参数不正确,生成第一执行错误信息。可以判断所述SQL语句中的参数的数据类型是否正确,以及判断所述SQL语句中的参数的数值是否为预设值。若所述SQL语句中的参数的数据类型不正确,或者所述SQL语句中的参数的参数不是预设值,则所述SQL语句中的参数不正确,生成第一执行错误信息。
(3)判断所述SQL语句中的表是否正确,若所述SQL语句中的表不正确,生成第二执行错误信息。可以判断所述SQL语句中的表是否存在,以及判断是否有所述SQL语句中的表的访问权限,若所述SQL语句中的表不存在,或者没有所述SQL语句中的表的访问权限,则所述SQL语句中的表不正确,生成第二执行错误信息。
(4)若所述SQL语句中的参数正确且所述SQL语句中的表正确,生成第三执行错误信息。若所述SQL语句中的参数正确且所述SQL语句中的表正确,表示执行所述SQL语句的过程中出现了其他错误,则生成第三执行错误信息。
将所述SQL语句的执行错误信息赋值给所述全局变量组中所述执行错误信息对应的全局变量就是将所述执行错误信息转换为字符串赋值给所述全局变量组中与所述执行错误信息对应的全局变量。例如,将包括执行标识信息“false”、第一执行错误信息“false001”、第二执行错误信息“false002”转换为字符串“false$false001$false002”赋值给全局变量组中与执行错误信息对应的全局变量“status=false$false001$false002”。或者,将包括执行标识信息“false”、第三执行错误信息“false003”转换为字符串“false$false003”赋值给全局变量组中与执行错误信息对应的全局变量“status=false$false003”,其中“status”为与执行错误信息对应的全局变量。
所述通过所述全局变量组将所述执行错误信息插入所述日志表包括:
(1)根据所述全局变量组生成第二日志插入语句。举例来说,根据所述全局变量组“task_name=T001;autocommit=true;task_desc=每天备份一次用户表;step_name=backup_table;step_desc=备份表;status=false$false003”生成第二日志插入语句“Insert into etl_task_log(task_name,step_name,step_desc,start_time,status)values(T001,backup_table,’备份表’,now(),false$false003)”。
(2)执行所述第二日志插入语句,将所述全局变量中所述执行错误信息对应的全局变量插入所述日志表。
例如,执行“Insert into etl_task_log(task_name,step_name,step_desc,start_time,status)values(T001,backup_table,’备份表’,now(),false$false003)”,将所述全局变量中所述执行错误信息对应的全局变量插入所述日志表。
实施例一的日志插入方法设定任务配置文件,所述任务配置文件包括第一命令注释语句,第二命令注释语句和与所述第二命令注释语句对应的SQL语句;读取所述第一命令注释语句,解析所述第一命令注释语句的命令标识和命令参数;根据所述第一命令注释语句的命令标识和命令参数初始化所述任务配置文件对应的全局变量组;读取所述第二命令注释语句,解析所述第二命令注释语句的命令标识和命令参数,根据所述第二命令注释语句的命令标识判断所述第二命令注释语句的类别;若所述第二命令注释语句的类别为插入命令注释语句,通过所述全局变量组将所述插入命令注释语句的命令参数插入日志表,所述插入命令注释语句的命令参数包括与所述插入命令注释语句对应的SQL语句的日志信息;读取所述第二命令注释语句对应的SQL语句,执行所述SQL语句;若所述SQL语句执行失败,生成所述SQL语句的执行错误信息,将所述SQL语句的执行错误信息赋值给所述全局变量组中所述执行错误信息对应的全局变量,通过所述全局变量组将所述执行错误信息插入所述日志表。实施例一能够提升将SQL语句执行错误信息插入日志表的效率。
在另一实施例中,所述方法还可以包括:
若所述第二命令注释语句的类别为提交命令注释语句,则判断所述提交命令注释语句中的命令参数是否为“true”;
若所述提交命令注释语句中的命令参数为“true”,则提交所述SQL语句对应的数据库事务。
在另一实施例中,所述方法还可以包括:
若所述SQL语句执行失败,则判断所述第一命令注释语句中用于控制输出日志信息的命令参数是否为“true”;
若所述第一命令注释语句中用于控制输出日志信息的命令参数为“true”,则输出所述日志表中所述SQL语句的执行失败信息。
在另一实施例中,在所述根据所述第一命令注释语句的命令标识和命令参数初始化所述任务配置文件对应的全局变量组之前,所述方法还包括:
判断所述第一命令注释语句中的命令标识是否包含在所述命令标识-全局变量表中。
若所述第一命令注释语句中的命令标识包含在所述命令标识-全局变量表中,则根据所述第一命令注释语句的命令标识和命令参数初始化所述任务配置文件对应的全局变量组。
在另一实施例中,在所述根据所述第二命令注释语句的命令标识判断所述第二命令注释语句的类别之前,所述方法还可以包括:
判断所述第二命令注释语句中的命令标识是否包含在所述命令标识-全局变量表中。
若所述第二命令注释语句中的命令标识包含在所述命令标识-全局变量表中,则根据所述第二命令注释语句的命令标识判断所述第二命令注释语句的类别。
实施例二
图2是本发明实施例二提供的日志插入装置的结构图。所述日志插入装置20应用于计算机装置。本装置的日志插入是在日志表中插入SQL语句执行失败的日志信息。如图2所示,所述日志插入装置20可以包括设定模块201、第一解析模块202、初始化模块203、第二解析模块204、第一插入模块205、第二插入模块206。
设定模块201,用于设定任务配置文件,所述任务配置文件包括第一命令注释语句、第二命令注释语句和SQL(Structured Query Language,结构化查询语言)语句,所述SQL语句与所述第二命令注释语句相对应。
在本实施例中,每个任务配置文件描述一个数据库操作任务,如将指定数据导入数据库。每个任务配置文件包括一个第一命令注释语句、多个第二命令注释语句,每个第二命令注释语句对应至少一个SQL语句。
在本实施例中,所述任务配置文件的结构要满足:所述第一命令注释语句为所述任务配置文件的首条语句,所述第二命令注释语句和与其对应的SQL语句相邻,并且所述第二命令注释语句在其对应的SQL语句之前。可以检测所述任务配置文件是否满足结构要求,若所述任务配置文件满足结构要求,则执行后续步骤。否则,若所述任务配置文件不满足结构要求,则流程结束。
每个第一命令注释语句或第二命令注释语句包括至少一个命令。在本实施例中,所述命令包括用于更新日志表的命令。用于更新日志表的命令可以包括“@task_name=XXX”、“@task_desc=XXX”、“@step_name=XXX”、“@step_desc=XXX”等。其中,“@task_name=XXX”用于设置任务名称,“@task_desc=XXX”用于设置任务描述,“@step_name=XXX”用于设置步骤名称,“@step_desc=XXX”用于设置步骤描述。
所述命令还包括用于控制SQL语句对应的数据库事务提交的命令。用于控制SQL语句对应的数据库事务提交的命令可以包括“@autocommit=true|false”,用于设置执行完SQL语句后是否提交该SQL语句对应的数据库事务。
在另一实施例中,所述命令还可以包括用于控制输出日志信息的命令。用于控制输出日志信息的命令可以为“@debug=true|false”,用于设置是否输出日志表中SQL语句的执行失败信息。
所述SQL语句用于实现数据库操作任务的具体业务逻辑。
可选的,所述任务配置文件还可以包括其他的注释语句。例如,所述任务配置文件还可以包括SQL语句注释语句,用于对所述任务配置文件中的SQL语句进行解释说明,以方便用户理解所述括SQL语句。
所述第一命令注释语句和所述第二命令注释语句中可以用注释识别字符标示所述第一命令注释语句和所述第二命令注释语句。例如,可以用注释识别字符“-”标示所述第一命令注释语句和所述第二命令注释语句。因此,若代码行包括注释识别字符,则所述代码行为第一命令注释语句或第二命令注释语句;若代码行不包括注释识别字符,则所述代码行为SQL语句。
所述第一命令注释语句和所述第二命令注释语句的命令识别字符可以相同也可以不同。例如,所述第一命令注释语句包括第一命令识别字符,所述第二命令注释语句包括第二命令识别字符。
可以用命令识别字符标示所述第一命令注释语句和所述第二命令注释语句中的命令。例如,可以用命令识别字符“-#”标示所述第一命令注释语句和所述第二命令注释语句中的命令。
第一解析模块202,用于读取所述第一命令注释语句,解析所述第一命令注释语句的命令标识和命令参数。
在一实施例中,所述第一命令注释语句为所述任务配置文件的首条语句,则读取所述任务配置文件的首条语句。
或者,在另一实施例中,所述第一命令注释语句包括第一命令识别字符,则根据所述第一命令识别字符读取所述第一命令注释语句。
所述第一命令注释语句具有固定的格式,根据所述第一命令注释语句的格式解析所述第一命令注释语句的命令标识和命令参数。所述第一命令注释语句可以包括多个命令标识和多个命令参数,其中,命令标识和命令参数一一对应。
举例来说,第一命令注释语句为“@task_name=T001;@autocommit=true;@task_desc=每天备份一次用户表”。该第一命令注释语句包括命令“@task_name=T001”、“@autocommit=true”和“@task_desc=每天备份一次用户表”。命令“@task_name=T001”用于设置任务名称为T001,命令“@autocommit=true”用于设置执行完SQL语句后提交该SQL语句对应的数据库事务,命令“@task_desc=每天备份一次用户表”用于设置任务描述为“每天备份一次用户表”。字符“@”到字符“=”之间的字符串为命令标识,字符“=”之后分号“;”之前的为命令参数,解析得到第一命令注释语句的三个命令标识为“@task_name”、“@autocommit”、“@task_desc”,所述三个命令标识对应的三个命令参数分别为“T001”、“true”、“每天备份一次用户表”。
在一实施例中,所述第一命令注释语句包括用于控制输出日志信息的命令,例如包括“@debug=true”,则解析得到第一命令注释语句的命令标识为“@debug”,所述命令标识对应的命令参数为“true”。
初始化模块203,用于根据所述第一命令注释语句的命令标识和命令参数初始化所述任务配置文件对应的全局变量组。
在一具体实施例中,所述根据所述第一命令注释语句的命令标识和命令参数初始化所述任务配置文件对应的全局变量组包括:
将所述全局变量组中的全局变量初始化为空值;
查询预设的命令标识-全局变量表,判断所述全局变量组中是否包含所述第一命令注释语句的命令标识对应的全局变量;
若所述全局变量组中包含所述第一命令注释语句的命令标识对应的全局变量,则将所述第一命令注释语句的命令标识对应的命令参数赋值给所述全局变量组中所述第一命令注释语句的命令标识对应的全局变量。
举例来说,预设的命令标识-全局变量表为“@task_name-task_name;@autocommit-autocommit;@task_desc-task_desc”,表示命令标识“@task_name”、“@autocommit”、“@task_desc”对应的全局变量分别为“task_name”、“autocommit”、“task_desc”。将任务配置文件对应的全局变量组中的全局变量初始化为“task_name=null;autocommit=null;task_desc=null”。任务配置文件中的第一命令注释语句为“@task_name=T001;@autocommit=true;@task_desc=每天备份一次用户表”。任务配置文件对应的全局变量组中包含第一命令注释语句的命令标识“@task_name”对应的全局变量“task_name”,包含第一命令注释语句的命令标识“@autocommit”对应的全局变量“autocommit”,以及包含第一命令注释语句的命令标识“@task_desc”对应的全局变量“task_desc”。因此,将第一命令注释语句的命令标识“@task_name”对应的命令参数“T001”赋值给全局变量组中第一命令注释语句的命令标识对应的全局变量“task_name”,将第一命令注释语句的命令标识“@autocommit”对应的命令参数“true”赋值给全局变量组中第一命令注释语句的命令标识对应的全局变量“autocommit”,将第一命令注释语句的命令标识“@task_desc”对应的命令参数“每天备份一次用户表”赋值给全局变量组中第一命令注释语句的命令标识对应的全局变量“task_desc”,赋值后的全局变量组为“task_name=T001;autocommit=true;task_desc=每天备份一次用户表”。
第二解析模块204,用于读取所述第二命令注释语句,解析所述第二命令注释语句的命令标识和命令参数,根据所述第二命令注释语句的命令标识判断所述第二命令注释语句的类别。
在一实施例中,所述第二命令注释语句包括第二命令识别字符,则根据所述第二命令识别字符读取所述第二命令注释语句。
所述第二命令注释语句具有固定的格式,根据所述第二命令注释语句的格式解析所述第二命令注释语句的命令标识和命令参数。所述第二命令注释语句可以包括多个命令标识和多个命令参数,其中,命令标识和命令参数一一对应。
所述根据所述第二命令注释语句的命令标识判断所述第二命令注释语句的类别包括:
若所述第二命令注释语句的命令标识为@step_name或@step_desc,则所述第二命令注释语句的类别为插入命令注释语句;
若所述第二命令注释语句的命令标识为@autocommit,则所述第二命令注释语句的类别为提交命令注释语句。
第一插入模块205,用于若所述第二命令注释语句的类别为插入命令注释语句,通过所述全局变量组将所述插入命令注释语句的命令参数插入日志表,所述插入命令注释语句的命令参数包括与所述插入命令注释语句对应的SQL语句的日志信息。
在一具体实施例中,所述通过所述全局变量组将所述插入命令注释语句的命令参数插入日志表包括:
查询预设的命令标识-全局变量表,确定所述全局变量组中所述插入命令注释语句的命令标识对应的全局变量;
将所述插入命令注释语句的命令参数赋值给所述全局变量组中所述插入命令注释语句的命令标识对应的全局变量,其中所述插入命令注释语句的命令参数与所述插入命令注释语句的命令标识一一对应;
根据所述全局变量组生成第一日志插入语句;
执行所述第一日志插入语句,将所述全局变量组中所述插入命令注释语句的命令标识对应的全局变量插入所述日志表。
例如,插入命令注释语句为“@step_name=backup_table;@step_desc=备份表”。查询预设的命令标识-全局变量表,确定全局变量组中插入命令注释语句的命令标识对应的全局变量为“step_name=null;step_desc=null”。将插入命令注释语句的命令参数“backup_table”赋值给全局变量组中插入命令注释语句的命令标识“@step_name”对应的全局变量“step_name”,将插入命令注释语句的命令参数“备份表”赋值给全局变量组中插入命令注释语句的命令标识“@step_desc”对应的全局变量“step_desc”,赋值后的与插入命令注释语句的命令标识对应的全局变量为“step_name=backup_table;step_desc=备份表”。根据全局变量组“task_name=T001;autocommit=true;task_desc=每天备份一次用户表;step_name=backup_table;step_desc=备份表”生成第一日志插入语句“Insertinto etl_task_log(task_name,step_name,step_desc,start_time)values(T001,backup_table,’备份表’,now())”,其中“now()”为获取当前时间的函数。执行第一日志插入语句,将全局变量组中插入命令注释语句的命令标识对应的全局变量插入日志表。
第二插入模块206,用于读取所述第二命令注释语句对应的SQL语句,执行所述SQL语句。
所述第二命令注释语句对应的SQL语句是不包括所述命令识别字符和所述注释识别字符的代码行。
执行所述SQL语句就是根据所述SQL语句对数据库进行操作,以实现所述任务配置文件描述的数据库操作任务,如将给定数据导入数据库中。
第二插入模块206,还用于若所述SQL语句执行失败,生成所述SQL语句的执行错误信息,将所述SQL语句的执行错误信息赋值给所述全局变量组中所述执行错误信息对应的全局变量,通过所述全局变量组将所述执行错误信息插入所述日志表。
在一具体实施例中,生成所述SQL语句的执行错误信息包括:
(1)将所述SQL语句的执行标识信息赋值为“false”。所述SQL语句的执行标识信息初始值为“true”,将所述SQL语句的执行标识信息赋值为“false”,表明所述SQL语句执行失败。
(2)判断所述SQL语句中的参数是否正确,若所述SQL语句中的参数不正确,生成第一执行错误信息。可以判断所述SQL语句中的参数的数据类型是否正确,以及判断所述SQL语句中的参数的数值是否为预设值。若所述SQL语句中的参数的数据类型不正确,或者所述SQL语句中的参数的参数不是预设值,则所述SQL语句中的参数不正确,生成第一执行错误信息。
(3)判断所述SQL语句中的表是否正确,若所述SQL语句中的表不正确,生成第二执行错误信息。可以判断所述SQL语句中的表是否存在,以及判断是否有所述SQL语句中的表的访问权限,若所述SQL语句中的表不存在,或者没有所述SQL语句中的表的访问权限,则所述SQL语句中的表不正确,生成第二执行错误信息。
(4)若所述SQL语句中的参数正确且所述SQL语句中的表正确,生成第三执行错误信息。若所述SQL语句中的参数正确且所述SQL语句中的表正确,表示执行所述SQL语句的过程中出现了其他错误,则生成第三执行错误信息。
将所述SQL语句的执行错误信息赋值给所述全局变量组中所述执行错误信息对应的全局变量就是将所述执行错误信息转换为字符串赋值给所述全局变量组中与所述执行错误信息对应的全局变量。例如,将包括执行标识信息“false”、第一执行错误信息“false001”、第二执行错误信息“false002”转换为字符串“false$false001$false002”赋值给全局变量组中与执行错误信息对应的全局变量“status=false$false001$false002”。或者,将包括执行标识信息“false”、第三执行错误信息“false003”转换为字符串“false$false003”赋值给全局变量组中与执行错误信息对应的全局变量“status=false$false003”,其中“status”为与执行错误信息对应的全局变量。
所述通过所述全局变量组将所述执行错误信息插入所述日志表包括:
(1)根据所述全局变量组生成第二日志插入语句。举例来说,根据所述全局变量组“task_name=T001;autocommit=true;task_desc=每天备份一次用户表;step_name=backup_table;step_desc=备份表;status=false$false003”生成第二日志插入语句“Insert into etl_task_log(task_name,step_name,step_desc,start_time,status)values(T001,backup_table,’备份表’,now(),false$false003)”。
(2)执行所述第二日志插入语句,将所述全局变量中所述执行错误信息对应的全局变量插入所述日志表。
例如,执行“Insert into etl_task_log(task_name,step_name,step_desc,start_time,status)values(T001,backup_table,’备份表’,now(),false$false003)”,将所述全局变量中所述执行错误信息对应的全局变量插入所述日志表。
实施例二的日志插入装置20设定任务配置文件,所述任务配置文件包括第一命令注释语句,第二命令注释语句和与所述第二命令注释语句对应的SQL语句;读取所述第一命令注释语句,解析所述第一命令注释语句的命令标识和命令参数;根据所述第一命令注释语句的命令标识和命令参数初始化所述任务配置文件对应的全局变量组;读取所述第二命令注释语句,解析所述第二命令注释语句的命令标识和命令参数,根据所述第二命令注释语句的命令标识判断所述第二命令注释语句的类别;若所述第二命令注释语句的类别为插入命令注释语句,通过所述全局变量组将所述插入命令注释语句的命令参数插入日志表,所述插入命令注释语句的命令参数包括与所述插入命令注释语句对应的SQL语句的日志信息;读取所述第二命令注释语句对应的SQL语句,执行所述SQL语句;若所述SQL语句执行失败,生成所述SQL语句的执行错误信息,将所述SQL语句的执行错误信息赋值给所述全局变量组中所述执行错误信息对应的全局变量,通过所述全局变量组将所述执行错误信息插入所述日志表。实施例二能够提升将SQL语句执行错误信息插入日志表的效率。
在另一实施例中,所述日志插入装置20还可以包括:提交模块,用于若所述第二命令注释语句的类别为提交命令注释语句,则判断所述提交命令注释语句中的命令参数是否为“true”;若所述提交命令注释语句中的命令参数为“true”,则提交所述SQL语句对应的数据库事务。
在另一实施例中,所述日志插入装置20还可以包括:输出模块,用于若所述SQL语句执行失败,则判断所述第一命令注释语句中用于控制输出日志信息的命令参数是否为“true”,若所述第一命令注释语句中用于控制输出日志信息的命令参数为“true”,则输出所述日志表中所述SQL语句的执行失败信息。
在另一实施例中,所述日志插入装置20还可以包括:第一判断模块,用于在所述根据所述第一命令注释语句的命令标识和命令参数初始化所述任务配置文件对应的全局变量组之前,判断所述第一命令注释语句中的命令标识是否包含在所述命令标识-全局变量表中。若所述第一命令注释语句中的命令标识包含在所述命令标识-全局变量表中,则所述初始化模块203根据所述第一命令注释语句的命令标识和命令参数初始化所述任务配置文件对应的全局变量组。
在另一实施例中,所述日志插入装置20还可以包括:第二判断模块,用于在所述根据所述第二命令注释语句的命令标识判断所述第二命令注释语句的类别之前,判断所述第二命令注释语句中的命令标识是否包含在所述命令标识-全局变量表中。若所述第二命令注释语句中的命令标识包含在所述命令标识-全局变量表中,则所述第二解析模块204根据所述第二命令注释语句的命令标识判断所述第二命令注释语句的类别。
实施例三
本实施例提供一种计算机存储介质,该计算机存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述日志插入方法实施例中的步骤,例如图1所示的步骤S101-S107:
S101,设定任务配置文件,所述任务配置文件包括第一命令注释语句,第二命令注释语句和与所述第二命令注释语句对应的SQL语句;
S102,读取所述第一命令注释语句,解析所述第一命令注释语句的命令标识和命令参数;
S103,根据所述第一命令注释语句的命令标识和命令参数初始化所述任务配置文件对应的全局变量组;
S104,读取所述第二命令注释语句,解析所述第二命令注释语句的命令标识和命令参数,根据所述第二命令注释语句的命令标识判断所述第二命令注释语句的类别;
S105,若所述第二命令注释语句的类别为插入命令注释语句,通过所述全局变量组将所述插入命令注释语句的命令参数插入日志表,所述插入命令注释语句的命令参数包括与所述插入命令注释语句对应的SQL语句的日志信息;
S106,读取所述第二命令注释语句对应的SQL语句,执行所述SQL语句;
S107,若所述SQL语句执行失败,生成所述SQL语句的执行错误信息,将所述SQL语句的执行错误信息赋值给所述全局变量组中所述执行错误信息对应的全局变量,通过所述全局变量组将所述执行错误信息插入所述日志表。
或者,该计算机程序被处理器执行时实现上述装置实施例中各模块的功能,例如图2中的模块201-206:
设定模块201,用于设定任务配置文件,所述任务配置文件包括第一命令注释语句,第二命令注释语句和与所述第二命令注释语句对应的SQL语句;
第一解析模块202,用于读取所述第一命令注释语句,解析所述第一命令注释语句的命令标识和命令参数;
初始化模块203,用于根据所述第一命令注释语句的命令标识和命令参数初始化所述任务配置文件对应的全局变量组;
第二解析模块204,用于读取所述第二命令注释语句,解析所述第二命令注释语句的命令标识和命令参数,根据所述第二命令注释语句的命令标识判断所述第二命令注释语句的类别;
第一插入模块205,用于若所述第二命令注释语句的类别为插入命令注释语句,通过所述全局变量组将所述插入命令注释语句的命令参数插入日志表,所述插入命令注释语句的命令参数包括与所述插入命令注释语句对应的SQL语句的日志信息;
第二插入模块206,用于读取所述第二命令注释语句对应的SQL语句,执行所述SQL语句,若所述SQL语句执行失败,生成所述SQL语句的执行错误信息,将所述SQL语句的执行错误信息赋值给所述全局变量组中所述执行错误信息对应的全局变量,通过所述全局变量组将所述执行错误信息插入所述日志表。
实施例四
图3为本发明实施例四提供的计算机装置的示意图。所述计算机装置30包括存储器301、处理器302以及存储在所述存储器301中并可在所述处理器302上运行的计算机程序303,例如日志插入程序。所述处理器302执行所述计算机程序303时实现上述日志插入方法实施例中的步骤,例如图1所示的步骤S101-S107:
S101,设定任务配置文件,所述任务配置文件包括第一命令注释语句,第二命令注释语句和与所述第二命令注释语句对应的SQL语句;
S102,读取所述第一命令注释语句,解析所述第一命令注释语句的命令标识和命令参数;
S103,根据所述第一命令注释语句的命令标识和命令参数初始化所述任务配置文件对应的全局变量组;
S104,读取所述第二命令注释语句,解析所述第二命令注释语句的命令标识和命令参数,根据所述第二命令注释语句的命令标识判断所述第二命令注释语句的类别;
S105,若所述第二命令注释语句的类别为插入命令注释语句,通过所述全局变量组将所述插入命令注释语句的命令参数插入日志表,所述插入命令注释语句的命令参数包括与所述插入命令注释语句对应的SQL语句的日志信息;
S106,读取所述第二命令注释语句对应的SQL语句,执行所述SQL语句;
S107,若所述SQL语句执行失败,生成所述SQL语句的执行错误信息,将所述SQL语句的执行错误信息赋值给所述全局变量组中所述执行错误信息对应的全局变量,通过所述全局变量组将所述执行错误信息插入所述日志表。
或者,该计算机程序被处理器执行时实现上述装置实施例中各模块的功能,例如图2中的模块201-206:
设定模块201,用于设定任务配置文件,所述任务配置文件包括第一命令注释语句,第二命令注释语句和与所述第二命令注释语句对应的SQL语句;
第一解析模块202,用于读取所述第一命令注释语句,解析所述第一命令注释语句的命令标识和命令参数;
初始化模块203,用于根据所述第一命令注释语句的命令标识和命令参数初始化所述任务配置文件对应的全局变量组;
第二解析模块204,用于读取所述第二命令注释语句,解析所述第二命令注释语句的命令标识和命令参数,根据所述第二命令注释语句的命令标识判断所述第二命令注释语句的类别;
第一插入模块205,用于若所述第二命令注释语句的类别为插入命令注释语句,通过所述全局变量组将所述插入命令注释语句的命令参数插入日志表,所述插入命令注释语句的命令参数包括与所述插入命令注释语句对应的SQL语句的日志信息;
第二插入模块206,用于读取所述第二命令注释语句对应的SQL语句,执行所述SQL语句,若所述SQL语句执行失败,生成所述SQL语句的执行错误信息,将所述SQL语句的执行错误信息赋值给所述全局变量组中所述执行错误信息对应的全局变量,通过所述全局变量组将所述执行错误信息插入所述日志表。
示例性的,所述计算机程序303可以被分割成一个或多个模块,所述一个或者多个模块被存储在所述存储器301中,并由所述处理器302执行,以完成本方法。所述一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序303在所述计算机装置30中的执行过程。例如,所述计算机程序303可以被分割成图2中的设定模块201、第一解析模块202、初始化模块203、第二解析模块204、第一插入模块205、第二插入模块206,各模块具体功能参见实施例二。
所述计算机装置30可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。本领域技术人员可以理解,所述示意图3仅仅是计算机装置30的示例,并不构成对计算机装置30的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述计算机装置30还可以包括输入输出设备、网络接入设备、总线等。
所称处理器302可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器302也可以是任何常规的处理器等,所述处理器302是所述计算机装置30的控制中心,利用各种接口和线路连接整个计算机装置30的各个部分。
所述存储器301可用于存储所述计算机程序303,所述处理器302通过运行或执行存储在所述存储器301内的计算机程序或模块,以及调用存储在存储器301内的数据,实现所述计算机装置30的各种功能。所述存储器301可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机装置30的使用所创建的数据(比如音频数据)等。此外,存储器301可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
所述计算机装置30集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他模块或步骤,单数不排除复数。系统权利要求中陈述的多个模块或装置也可以由一个模块或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
Claims (10)
1.一种日志插入方法,其特征在于,所述方法包括:
设定任务配置文件,所述任务配置文件包括第一命令注释语句,第二命令注释语句和与所述第二命令注释语句对应的SQL语句;
读取所述第一命令注释语句,解析所述第一命令注释语句的命令标识和命令参数;
根据所述第一命令注释语句的命令标识和命令参数初始化所述任务配置文件对应的全局变量组;
读取所述第二命令注释语句,解析所述第二命令注释语句的命令标识和命令参数,根据所述第二命令注释语句的命令标识判断所述第二命令注释语句的类别;
若所述第二命令注释语句的类别为插入命令注释语句,通过所述全局变量组将所述插入命令注释语句的命令参数插入日志表,所述插入命令注释语句的命令参数包括与所述插入命令注释语句对应的SQL语句的日志信息;
读取所述第二命令注释语句对应的SQL语句,执行所述SQL语句;
若所述SQL语句执行失败,生成所述SQL语句的执行错误信息,将所述SQL语句的执行错误信息赋值给所述全局变量组中所述执行错误信息对应的全局变量,通过所述全局变量组将所述执行错误信息插入所述日志表。
2.如权利要求1所述的方法,其特征在于,所述根据所述第一命令注释语句的命令标识和命令参数初始化所述任务配置文件对应的全局变量组包括:
将所述全局变量组中的全局变量初始化为空值;
查询预设的命令标识-全局变量表,判断所述全局变量组中是否包含所述第一命令注释语句的命令标识对应的全局变量;
若所述全局变量组中包含所述第一命令注释语句的命令标识对应的全局变量,则将所述第一命令注释语句的命令标识对应的命令参数赋值给所述全局变量组中所述第一命令注释语句的命令标识对应的全局变量。
3.如权利要求1所述的方法,其特征在于,所述通过所述全局变量组将所述插入命令注释语句的命令参数插入日志表包括:
查询预设的命令标识-全局变量表,确定所述全局变量组中所述插入命令注释语句的命令标识对应的全局变量;
将所述插入命令注释语句的命令参数赋值给所述全局变量组中所述插入命令注释语句的命令标识对应的全局变量;
根据所述全局变量组生成第一日志插入语句;
执行所述第一日志插入语句,将所述全局变量组中所述插入命令注释语句的命令标识对应的全局变量插入所述日志表。
4.如权利要求1所述的方法,其特征在于,所述生成所述SQL语句的执行错误信息包括:
将所述SQL语句的执行标识信息赋值为“false”;
判断所述SQL语句中的参数是否正确,若所述SQL语句中的参数不正确,生成第一执行错误信息;
判断所述SQL语句中的表是否正确,若所述SQL语句中的表不正确,生成第二执行错误信息;
若所述SQL语句中的参数正确且所述SQL语句中的表正确,生成第三执行错误信息。
5.如权利要求1所述的方法,其特征在于,所述通过所述全局变量组将所述执行错误信息插入所述日志表包括:
根据所述全局变量组生成第二日志插入语句;
执行所述第二日志插入语句,将所述全局变量中所述执行错误信息对应的全局变量插入所述日志表。
6.如权利要求1-5中任一项所述的方法,其特征在于,所述方法还包括:
若所述第二命令注释语句的类别为提交命令注释语句,则判断所述提交命令注释语句中的命令参数是否为“true”;
若所述提交命令注释语句中的命令参数为“true”,则提交所述SQL语句对应的数据库事务。
7.如权利要求1-5中任一项所述的方法,其特征在于,所述方法还包括:
若所述SQL语句执行失败,则判断所述第一命令注释语句中用于控制输出日志信息的命令参数是否为“true”;
若所述第一命令注释语句中用于控制输出日志信息的命令参数为“true”,则输出所述日志表中所述SQL语句的执行失败信息。
8.一种日志插入装置,其特征在于,所述装置包括:
设定模块,用于设定任务配置文件,所述任务配置文件包括第一命令注释语句,第二命令注释语句和与所述第二命令注释语句对应的SQL语句;
第一解析模块,用于读取所述第一命令注释语句,解析所述第一命令注释语句的命令标识和命令参数;
初始化模块,用于根据所述第一命令注释语句的命令标识和命令参数初始化所述任务配置文件对应的全局变量组;
第二解析模块,用于读取所述第二命令注释语句,解析所述第二命令注释语句的命令标识和命令参数,根据所述第二命令注释语句的命令标识判断所述第二命令注释语句的类别;
第一插入模块,用于若所述第二命令注释语句的类别为插入命令注释语句,通过所述全局变量组将所述插入命令注释语句的命令参数插入日志表,所述插入命令注释语句的命令参数包括与所述插入命令注释语句对应的SQL语句的日志信息;
第二插入模块,用于读取所述第二命令注释语句对应的SQL语句,执行所述SQL语句,若所述SQL语句执行失败,生成所述SQL语句的执行错误信息,将所述SQL语句的执行错误信息赋值给所述全局变量组中所述执行错误信息对应的全局变量,通过所述全局变量组将所述执行错误信息插入所述日志表。
9.一种计算机装置,其特征在于:所述计算机装置包括处理器,所述处理器用于执行存储器中存储的计算机程序以实现如权利要求1-7中任一项所述日志插入方法。
10.一种计算机存储介质,所述计算机存储介质上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述日志插入方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910727085.6A CN110633258B (zh) | 2019-08-07 | 2019-08-07 | 日志插入方法、装置、计算机装置及存储介质 |
PCT/CN2019/117234 WO2021022702A1 (zh) | 2019-08-07 | 2019-11-11 | 日志插入方法、装置、计算机装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910727085.6A CN110633258B (zh) | 2019-08-07 | 2019-08-07 | 日志插入方法、装置、计算机装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110633258A CN110633258A (zh) | 2019-12-31 |
CN110633258B true CN110633258B (zh) | 2022-08-12 |
Family
ID=68969308
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910727085.6A Active CN110633258B (zh) | 2019-08-07 | 2019-08-07 | 日志插入方法、装置、计算机装置及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110633258B (zh) |
WO (1) | WO2021022702A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988524B (zh) * | 2021-03-12 | 2022-10-11 | 长鑫存储技术有限公司 | 业务流向的预警方法、装置、存储介质及计算机设备 |
CN116701339B (zh) * | 2023-08-07 | 2023-10-17 | 拓锐科技有限公司 | 一种基于事件日志文件的数据分析处理方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101464890A (zh) * | 2008-12-30 | 2009-06-24 | 中兴通讯股份有限公司 | 一种混合日志生成方法和解析方法 |
CN104391995A (zh) * | 2014-12-15 | 2015-03-04 | 北京趣拿软件科技有限公司 | 一种sql语句审核的方法、数据库运维的方法及系统 |
CN105446743A (zh) * | 2015-12-12 | 2016-03-30 | 天津南大通用数据技术股份有限公司 | 一种自动生成sql语句的系统及方法 |
WO2016078423A1 (zh) * | 2014-11-17 | 2016-05-26 | 中兴通讯股份有限公司 | 分布式数据库系统的事务处理方法及装置 |
CN108733543A (zh) * | 2017-04-24 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 一种日志分析的方法、装置、电子设备和可读存储介质 |
CN109918260A (zh) * | 2019-01-24 | 2019-06-21 | 平安科技(深圳)有限公司 | 一种项目代码的监控方法和装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6775683B2 (en) * | 2001-11-27 | 2004-08-10 | Ge Financial Assurance Holdings, Inc. | Method and system for performing processing data |
US20040044637A1 (en) * | 2002-08-30 | 2004-03-04 | Thomas Vachuska | Apparatus and method using reflection to generate database commands at runtime |
US7552147B2 (en) * | 2005-09-02 | 2009-06-23 | International Business Machines Corporation | System and method for minimizing data outage time and data loss while handling errors detected during recovery |
US10133614B2 (en) * | 2015-03-24 | 2018-11-20 | Ca, Inc. | Anomaly classification, analytics and resolution based on annotated event logs |
CN108959571B (zh) * | 2018-07-04 | 2020-12-04 | 上海达梦数据库有限公司 | Sql语句的运算方法、装置、终端设备及存储介质 |
CN109284282A (zh) * | 2018-10-22 | 2019-01-29 | 北京极数云舟科技有限公司 | 一种基于MySQL数据库运维方法和系统 |
-
2019
- 2019-08-07 CN CN201910727085.6A patent/CN110633258B/zh active Active
- 2019-11-11 WO PCT/CN2019/117234 patent/WO2021022702A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101464890A (zh) * | 2008-12-30 | 2009-06-24 | 中兴通讯股份有限公司 | 一种混合日志生成方法和解析方法 |
WO2016078423A1 (zh) * | 2014-11-17 | 2016-05-26 | 中兴通讯股份有限公司 | 分布式数据库系统的事务处理方法及装置 |
CN104391995A (zh) * | 2014-12-15 | 2015-03-04 | 北京趣拿软件科技有限公司 | 一种sql语句审核的方法、数据库运维的方法及系统 |
CN105446743A (zh) * | 2015-12-12 | 2016-03-30 | 天津南大通用数据技术股份有限公司 | 一种自动生成sql语句的系统及方法 |
CN108733543A (zh) * | 2017-04-24 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 一种日志分析的方法、装置、电子设备和可读存储介质 |
CN109918260A (zh) * | 2019-01-24 | 2019-06-21 | 平安科技(深圳)有限公司 | 一种项目代码的监控方法和装置 |
Non-Patent Citations (1)
Title |
---|
基于日志分析的SQL注入攻击检测方法;郭杨民;《台州学院学报》;20071215(第06期);第28-30页 * |
Also Published As
Publication number | Publication date |
---|---|
WO2021022702A1 (zh) | 2021-02-11 |
CN110633258A (zh) | 2019-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109086199B (zh) | 一种自动化生成测试脚本的方法、终端和可存储介质 | |
CN110825431B (zh) | 接口文档处理方法及装置、系统、存储介质和电子设备 | |
US9009175B2 (en) | System and method for database migration and validation | |
EP3443460B1 (en) | Method, apparatus, and computer-readable medium for performing functional testing of software | |
CN111400387A (zh) | 导入导出数据的转换方法、装置、终端设备及存储介质 | |
WO2014151789A9 (en) | System and method for developing business rules for decision engines | |
CN110633258B (zh) | 日志插入方法、装置、计算机装置及存储介质 | |
CN111797351A (zh) | 页面数据管理方法、装置、电子设备及介质 | |
CN112379883A (zh) | 一种代码文件生成方法、装置、设备及存储介质 | |
CN110941488A (zh) | 一种任务处理方法、装置、设备和存储介质 | |
CN114048129A (zh) | 软件功能变更的自动化测试方法、装置、设备及系统 | |
CN112417122A (zh) | 多轮问答方法及装置、计算机可读存储介质、电子设备 | |
CN111753140A (zh) | Xml文件解析方法及相关设备 | |
CN111367890A (zh) | 一种数据迁移的方法、装置、计算机设备及可读存储介质 | |
CN113094776B (zh) | 可视化组件模型数据构建的方法、系统及电子设备 | |
CN114116108A (zh) | 动态渲染方法、装置、设备及存储介质 | |
CN110955409A (zh) | 在云平台上创建资源的方法和装置 | |
CN115952201A (zh) | 数据查询方法、装置、系统及存储介质 | |
CN114968725A (zh) | 任务依赖关系校正方法、装置、计算机设备及存储介质 | |
CN113901025A (zh) | 数据库管理方法、装置、设备和存储介质 | |
CN114942749A (zh) | 审批系统开发方法、装置、设备及存储介质 | |
CN109783134B (zh) | 前端页面配置方法、装置及电子设备 | |
CN113051262A (zh) | 一种数据质检方法、装置、设备及存储介质 | |
CN111859985A (zh) | Ai客服模型测试方法、装置、电子设备及存储介质 | |
CN115470229B (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 |