CN108345603B - 一种sql语句解析方法及装置 - Google Patents
一种sql语句解析方法及装置 Download PDFInfo
- Publication number
- CN108345603B CN108345603B CN201710053524.0A CN201710053524A CN108345603B CN 108345603 B CN108345603 B CN 108345603B CN 201710053524 A CN201710053524 A CN 201710053524A CN 108345603 B CN108345603 B CN 108345603B
- Authority
- CN
- China
- Prior art keywords
- sql statement
- partition
- target
- data
- selection mode
- 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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种SQL语句解析方法,用于使SQL语句的语义可以随着时间或其他因素的变化而变化,实现例行化、周期性的数据计算任务的执行。本发明实施例方法包括:接收目标SQL语句,所述目标SQL语句的语法结构满足第一语法规则;根据所述语法结构确定所述目标SQL语句对应的选择模式;根据所述选择模式确定所述目标SQL语句对应的分区标识;调用所述分区标识对应的分区数据,并执行所述目标SQL语句对应的命令。本发明实施例还公开了一种SQL语句解析装置,用于使SQL语句的语义可以随着时间或其他因素的变化而变化,实现例行化、周期性的数据计算任务的执行。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种SQL语句解析方法及装置。
背景技术
结构化查询语言(Structured Query Language,SQL)是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
现有技术中,用户在编辑器中提交了SQL语句后,该语句会被传递到语法解析器,继而SQL语句会被解析为抽象语法树,然后将该抽象语法树提交给执行器来执行,执行完毕后,结果返回给用户。在该流程中,一旦用户编辑的SQL语句被提交,则后续流程中SQL语句的语义不能被修改。
但是对于一些大数据计算平台,其需求是每天以前一天的数据作为数据原材料进行计算得到当天的计算结果。由于其需要的数据是随着时间动态变化的,则在执行这些SQL语句对应的任务时,需要使用的数据分区是不同的,例如2016年12月8日执行任务,则需要使用p_20161207这个分区的数据,2016年12月9日执行任务,则需要使用p_20161208这个分区的数据。而现有技术中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语句解析方法中目标SQL语句的一个示例;
图4是本发明实施例提供的SQL语句解析方式中可识别SQL语句的一个示例;
图5是本发明实施例中SQL语句解析方法中的执行结果的一个示例;
图6是本发明实施例中SQL语句解析装置的一个实施例示意图;
图7是本发明实施例中SQL语句解析装置的另一实施例示意图;
图8是本发明实施例中SQL语句解析装置的另一实施例示意图;
图9是本发明实施例中SQL语句解析装置的另一实施例示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例提供了一种SQL语句解析方法及装置,用于使SQL语句的语义可以随着时间变化而变化。
为了便于理解本发明实施例,下面先对本发明实施例涉及的关键术语进行介绍:
大数据:一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低四大特征。大数据需要特殊的技术,以有效地处理大量的容忍经过时间内的数据。适用于大数据的技术,包括大规模并行处理数据库、数据挖掘电网、分布式文件系统、分布式数据库、云计算平台、互联网和可扩展的存储系统。
离线计算系统:一种针对海量数据周期性地存储、调度、计算以及计算结果出库的大数据系统。
Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。Hive分区是指按照一定的规则对数据进行分批存放,例如按日分区、按月分区等,在日常使用的系统中,存放在Hive中的数据一般按日进行分区。本发明实施例中的数据分区指的数据库中的分区,具体可以是Hive分区。
Hadoop:Hadoop实现了一个分布式文件系统(Hadoop Distributed File System,HDFS)。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(largedata set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streamingaccess)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
底层系统:本发明实施例中的底层系统指的就是基于Hadoop的离线大数据计算系统。
下面先介绍本发明实施例中的SQL语句解析方法,请参阅图1,本发明实施例中SQL语句解析方法的一个实施例包括:
101、接收目标SQL语句;
用户根据需求在SQL语句解析装置上编辑目标SQL语句,提交并保存为任务,SQL语句解析装置接收该目标SQL语句。应理解本发明实施例中,该目标SQL语句的语法结构除了需要满足传统HIVE SQL语法的要求,还需要满足第一语法规则。
应理解,第一语法规则是用户定义的语法规则,具体地,可以是用户新定义的有别于现有SQL语法结构的一种或多种的语法结构,包含有用户新定义的语法结构的目标SQL语句即认为满足第一语法规则。还应理解,满足第一语法规则的SQL语句,基于不同的内容可以对应于不同的执行命令。
102、根据语法结构确定目标SQL语句对应的选择模式;
SQL语句解析装置接收到目标SQL语句后,根据该目标SQL语句的语法结构确定目标SQL语句对应的选择模式。
应理解,用户定义了新的语法结构后,还可以设定不同类型的语法结构对应的选择模式,则SQL语句解析装置根据目标SQL语句中所包含新的语法结构的类型,即可确定该目标SQL语句的选择模式。还应理解,选择模式指的是实现目标SQL语句的过程中选择数据分区的具体方式。
103、根据选择模式确定目标SQL语句对应的分区标识;
SQL语句解析装置确定目标SQL语句对应的选择模式后,根据该选择模式确定目标SQL语句对应的分区标识。应理解,本发明实施例中的分区标识用于标识数据库中不同的数据分区。
104、调用分区标识对应的分区数据,并执行目标SQL语句对应的命令。
SQL语句解析装置确定分区标识后,调用该分区标识对应的分区数据,并执行目标SQL语句对应的命令。应理解,分区标识对应的分区数据指的是该分区标识对应的数据分区中的数据。目标SQL语句对应的命令指的是上述提到的用户的需求。
还应理解,执行完目标SQL语句对应的命令后,SQL语句解析装置还可以将执行结果返回给用户。
本发明实施例中,接收到语法结构满足预设规则的目标SQL语句后,根据该预设规则即可以确定该目标SQL语句对应的选择模式,根据该选择模式确定该目标SQL对应的分区标识,最后再调用分区标识对应的分区数据,以执行该目标SQL语句。也就是说,本发明实施例新定义了语法结构,并定义了该语法结构对应的选择模式,则当接收到该新定义的语法结构的语句时,便可以根据对应的选择模式选择该目标SQL语句对应的数据分区。本方案基于选择模式来确定数据分区,则通过对选择模式的设定,SQL语句对应的数据分区可以动态变化,即其语义可以随着时间或其他等因素的变化而变化,从而可以实现例行化、周期性的数据计算任务的执行。
基于上述图1对应的实施例可知,由于目标SQL语句中包含的新定义的语法结构,因而传统的底层系统并不能直接执行该目标SQL语句,下面介绍一种不修改底层系统的情况下,能够执行包含新定义语法结构的SQL语句对应的具体方式,请参阅图2,本发明实施例中SQL语句解析方法的另一实施例包括:
201、接收目标SQL语句;
用户根据需求在SQL语句解析装置上编辑目标SQL语句,提交并保存为任务,SQL语句解析装置接收该目标SQL语句。应理解本发明实施例中,该目标SQL语句的语法结构除了需要满足传统HIVE SQL语法的要求,还需要满足第一语法规则。
应理解,第一语法规则是用户定义的语法规则,具体地,可以是用户新定义的有别于现有SQL语法结构的一种或多种的语法结构,包含有用户新定义的语法结构的目标SQL语句即认为满足第一语法规则。还应理解,满足第一语法规则的SQL语句,基于不同的内容可以对应于不同的执行命令。
202、根据语法结构确定目标SQL语句对应的选择模式;
SQL语句解析装置接收到目标SQL语句后,根据该目标SQL语句的语法结构确定目标SQL语句对应的选择模式。
应理解,用户定义了新的语法结构后,还可以设定不同类型的语法结构对应的选择模式,则SQL语句解析装置可以通过正则表达式或其他方式识别出目标SQL语句中包含的新的语法结构的类型,再确定这个类型的语法结构对应的选择模式,这个选择模式即为目标SQL语句对应的选择模式。
还应理解,选择模式指的是实现目标SQL语句的过程中选择数据分区的具体方式。具体地,该选择模式可以是选择与当前时间相隔指定时间的分区数据,或选择与当前时间最接近的分区数据,或选择最近一次更新的分区数据,即与当前时间相隔指定时间区间的分区数据,或其他选择方式,具体此处不作限定。
为了便于理解,下面举例对上述几种选择模式进行介绍:
1、选择与当前时间相隔指定时间的分区数据;
例如定义${day}对应的数据分区是昨天,${day-1}对应的数据分区是前天,${today}对应的数据分区是今天,应理解,相隔指定时间并不限定与本例子所列举的相隔N日,还可以是相隔N小时,相隔N个月,相隔N年等。具体取决于数据分区的依据,即如果数据库中不是按日进行分区,而是按月进行分区的,则相隔指定时间就应该是相隔N月,相应的字符串可以定义为${month-N},此处N为小于或等于零的整数。按年按小时或按其他时间分区的情况设定与上述类似,此处不赘述。而这一类语法结构对应的选择模式即与当前时间相隔指定时间的分区数据。
2、选择与当前时间最接近的分区数据;
例如定义${newest}对应的数据分区选择没有具体日期的要求,其选择的就是与当前时间最近的分区数据,也就是最近一次更新的分区数据,其对年、月、日或小时或其他时间分区的情况均适用。假设数据库是按月进行分区的,则${newest}即选择最近一次更新的那个月的分区数据,即数据库中存有的与当前时间最接近的一个月的分区数据。按年按小时按日或按其他时间分区的选择方式与上述类似,此处不赘述。这一类语法结构对应的选择模式即与当前时间最接近的分区数据。
3、选择与当前时间相隔指定时间区间的分区数据。
例如('${day-30}':'${day}'),指的是三十一天前到昨天这一个时间区间对应的数据分区,('${day-30}':'${day-1}')指的是三十一天前到前天这一个时间区间对应的数据分区。应理解,相隔指定时间区间并不限定与本例子所列举的相隔N+M日至N日,还可以是相隔N+M个小时至N个小时,相隔N+M个月至N个月,相隔N+M年至N年等。具体取决于数据分区的依据,即如果数据库中不是按日进行分区,而是按月进行分区的,则相隔指定时间区间就应该是相隔N+M个月至N个月,相应的字符串可以定义为('${month-(N+M+1)}':'${month-(N+1)}'),此处N和M均为小于或等于零的整数。按年按小时或按其他时间分区的情况设定与上述类似,此处不赘述。这一类语法结构对应的选择模式即与当前时间相隔指定时间区间的分区数据。
需要说明的是,上述例子中的字符串仅仅只是示例,并不构成对本申请的限定,在实际应用过程中,字符串的具体内容由用户自定义。
203、根据选择模式确定目标SQL语句对应的分区标识;
SQL语句解析装置确定目标SQL语句对应的选择模式后,根据该选择模式确定目标SQL语句对应的分区标识。具体地,SQL语句解析装置可以提取目标SQL语句中的目标字符串,该目标字符串为语法结构中用于计算分区标识的字符串,然后根据目标字符串即可计算出目标SQL语句对应的分区标识。
为了便于理解,下面例句几个例子对计算过程进行说明:
1、选择与当前时间相隔指定时间的分区数据;
例如定义${day}对应的数据分区是昨天,而当前时间是2017年1月18日,则分区标识应该是2017年1月17日所在的数据分区对应的分区标识。
2、选择与当前时间最接近的分区数据;
例如定义${newest}对应的数据分区是最近一次更新的分区数据,即数据库中存有的与当前时间最接近的数据分区,数据库按时对数据进行分区,当前时间是2017年1月18日17时5分,如果数据库中存在2017年1月17日17时的数据分区,则目标SQL语句对应的分区标识就是2017年1月17日17时对应的分区标识,如果不存在2017年1月17日17时的数据分区,而存在2017年1月17日16时的数据分区,则目标SQL语句对应的分区标识就是2017年1月17日16时对应的分区标识,即选择数据库中最近一次更新的分区数据的分区标识作为目标SQL语句对应的分区标识。
需要说明的是,通过此选择模式确定目标SQL语句对应的分区标识,在例行化任务执行时,即使原始数据源出现断流,即如上述例子中某一个分区的数据空缺时,SQL语句解析装置会自动选择数据库中最近一次更新的数据分区执行当天任务,以使得任务正常运行,实现任务容灾。
3、选择与当前时间相隔指定时间区间的分区数据
例如定义例如('${day-30}':'${day}')对应的数据分区是三十一天前到昨天这一个时间区间对应的数据分区,当前时间是2017年1月18日,则分区标识应该是2016年12月18日至2017年1月17日这个时间区间对应的分区标识。
需要说明的是,上述例子仅仅只是示例,并不构成对本申请的限定。
还需要说明的是,本发明实施例中的当前时间可以根据系统自带的同步时钟确定,也可以由用户手动校准确定,还可以通过其他方式确定,具体此处不作限定。还应理解,本发明实施例中的分区标识用于标识数据库中不同的数据分区。
204、将目标SQL语句转换成可识别SQL语句;
SQL语句解析装置计算出分区标识后,即可以将该目标SQL语句转换成语法结构能够被底层系统识别的SQL语句,为了便于描述,本发明实施例将转换后的SQL语句称为可识别SQL语句,应理解,该可识别SQL语句中包含有该分区标识。
205、执行该可识别SQL语句。
SQL语句解析装置将目标SQL语句转换成可识别SQL语句后,该可识别SQL语句中包含有分区标识,则SQL语句解析装置直接执行该可识别SQL语句,即可调用分区标识对应的分区数据,完成该目标SQL语句对应的命令。
应理解,SQL语句解析装置完成目标SQL语句对应的命令后,SQL语句解析装置还可以将完成该命令后得到的结果返回给用户。
本发明实施例中,接收到语法结构满足预设规则的目标SQL语句后,根据该预设规则即可以确定该目标SQL语句对应的选择模式,根据该选择模式确定该目标SQL对应的分区标识,最后再调用分区标识对应的分区数据,以执行该目标SQL语句。也就是说,本发明实施例新定义了语法结构,并定义了该语法结构对应的选择模式,则当接收到该新定义的语法结构的语句时,便可以根据对应的选择模式选择该目标SQL语句对应的数据分区。本方案基于选择模式来确定数据分区,则通过对选择模式的设定,SQL语句对应的数据分区可以动态变化,即其语义可以随着时间或其他等因素的变化而变化,从而可以实现例行化、周期性的数据计算任务的执行。
其次,本发明实施例提供了一种调用分区标识对应的分区数据,并执行目标SQL语句对应的命令的具体方式,提高了方案的可实现性。
再次,本发明实施例提供了多种确定目标SQL语句对应的选择模式,并根据选择模式确定分区标识的具体方式,提高了方案的灵活性。
为了便于理解,下面以一实际应用场景对本发明实施例中的SQL语句解析方法进行描述:
现有一包含有Hive的SQL语句解析装置,该Hive用于管理数据,存放在Hive中的数据按日进行分区,即同一天的数据属于一个数据分区。用户预先在该SQL语句解析装置中定义了三种语法结构,第一种语法结构为${day},其对应的选择模式为选择与当前时间相隔指定时间的分区数据,具体地,${today}表示取用当天已经入库的数据,${day}表示取昨天的数据,${day-1}表示取前天的数据,依次类推,${day-N}表示取前N+1天的数据;第二种语法结构为${newest},其对应的选择模式为最近一次更新的分区数据,即与当前时间最接近的分区数据,具体地,${newest}表示取最近一次更新的分区数据,即与当前时间最近的一个分区数据;第三种语法结构为'${day}':'${day}',其对应的选择模式为与当前时间相隔指定时间区间的分区数据,具体地,('${day-(N+M)}':'${day-N}')表示去与与当前时间的前N+M+1天至前N+1天。
用户在SQL语句解析装置上使用${day}模式编辑并保存为任务,如下图3所示,图中的字符串即组成本发明实施例中的目标SQL语句,${day-2}为用户新定义的语法结构的其中一种,故该目标SQL语句满足第一预设规则。
用户保存任务后,SQL语句解析装置就会接收到该目标SQL语句,然后根据该目标SQL语句按天对该任务进行自动调度执行。
具体地,以2016年12月5日这一天为例,SQL语句解析装置执行该任务的详细过程如下:SQL语句解析装置通过正则表达式识别出目标SQL语句中包含的新的语法结构的类型为${day},该类型对应的选择模式为选择与当前时间相隔指定时间的分区数据,然后SQL语句解析装置再提取目标SQL语句中用于计算分清标识的字符串“${day-2}”,即选取前三天的数据分区,同时SQL语句解析装置获取系统当前日期为2016年12月5日,则根据当天时间以及提取的字符串内容计算出该目标SQL语句对应的分区标识为2016年12月2日对应的分区标识,即partition(p_20161202)_p1,SQL语句解析装置根据这个分区标识即可将目标SQL语句转换成能够被底层系统识别的SQL语句,具体如图4所示。
转换成底层系统可识别的SQL语句后,SQL语句解析装置直接执行该SQL语句即可以调用2016年12月2日的数据,并执行目标SQL语句对应的任务。执行完该任务后,SQL语句解析装置会将执行结果返回给用户。
每天SQL语句解析装置都会新建一个实例进行执行,并在预先设定的时间触发并完成该任务,运行几天后的执行结果如图5所示。
上面介绍了本发明实施例中的SQL语句解析方法,下面介绍本发明实施例中的SQL语句解析装置,请参阅图6,本发明实施例中SQL语句解析装置的一个实施例包括:
接收模块601,用于接收目标SQL语句,目标SQL语句的语法结构满足第一语法规则;
第一确定模块602,用于根据语法结构确定目标SQL语句对应的选择模式;
第二确定模块603,用于根据选择模式确定目标SQL语句对应的分区标识;
执行模块604,用于调用分区标识对应的分区数据,并执行目标SQL语句对应的命令。
本发明实施例中,接收模块601接收到语法结构满足预设规则的目标SQL语句后,第一确定模块602根据该预设规则即可以确定该目标SQL语句对应的选择模式,第二确定模块603根据该选择模式确定该目标SQL对应的分区标识,最后执行模块604调用分区标识对应的分区数据,以执行该目标SQL语句。也就是说,本发明实施例新定义了语法结构,并定义了该语法结构对应的选择模式,则当接收到该新定义的语法结构的语句时,便可以根据对应的选择模式选择该目标SQL语句对应的数据分区。本方案基于选择模式来确定数据分区,则通过对选择模式的设定,SQL语句对应的数据分区可以动态变化,即其语义可以随着时间或其他等因素的变化而变化,从而可以实现例行化、周期性的数据计算任务的执行。
为了便于理解,下面对本发明实施例中的SQL语句解析装置进行详细描述,请参阅图7,本发明实施例中SQL语句解析装置的另一实施例包括:
接收模块701,用于接收目标SQL语句,目标SQL语句的语法结构满足第一语法规则;
第一确定模块702,用于根据语法结构确定目标SQL语句对应的选择模式;
第二确定模块703,用于根据选择模式确定目标SQL语句对应的分区标识;
执行模块704,用于调用分区标识对应的分区数据,并执行目标SQL语句对应的命令;
其中,执行模块704包括:
转换单元7041,用于将目标SQL语句转换成可识别SQL语句,可识别SQL语句包含分区标识,可识别SQL语句的语法结构能够被底层系统识别;
执行单元7042,用于执行可识别SQL语句。
可选地,在本发明实施例中,选择模式可以包括:选择与当前时间相隔指定时间的分区数据,或选择与当前时间最接近的分区数据,或选择最近一次更新的分区数据,即数据库中存有的与当前时间相隔指定时间区间的分区数据。
可选地,在本发明实施例中,第一确定模块702可以包括:
识别单元7021,用于通过正则表达式识别目标SQL语句中的语法结构;
确定单元7022,用于确定语法结构对应的选择模式。
可选地,在本发明实施例中,第二确定模块703可以包括:
提取单元7031,用于提取目标SQL语句中的目标字符串,目标字符串为语法结构中用于计算分区标识的字符串;
计算单元7032,用于根据目标字符串计算SQL语句对应的分区标识。
本发明实施例中,接收模块701接收到语法结构满足预设规则的目标SQL语句后,第一确定模块702根据该预设规则即可以确定该目标SQL语句对应的选择模式,第二确定模块703根据该选择模式确定该目标SQL对应的分区标识,最后执行模块704调用分区标识对应的分区数据,以执行该目标SQL语句。也就是说,本发明实施例新定义了语法结构,并定义了该语法结构对应的选择模式,则当接收到该新定义的语法结构的语句时,便可以根据对应的选择模式选择该目标SQL语句对应的数据分区。本方案基于选择模式来确定数据分区,则通过对选择模式的设定,SQL语句对应的数据分区可以动态变化,即其语义可以随着时间或其他等因素的变化而变化,从而可以实现例行化、周期性的数据计算任务的执行。
其次,本发明实施例提供了一种执行模块执行目标SQL语句对应的任务的具体方式,提高了方案的可实现性。
再次,本发明实施例提供了选择模式可以包含多种类型,则第一确定模块可以通过多种方式确定选择模式,提高了方案的灵活性。
请参阅图8,本发明实施例中SQL语句解析装置的一个实施例包括:SQL编辑器801,语法解析器802以及SQL执行器803。
其中,SQL编辑器801,用于接收语法结构满足第一语法规则的目标SQL语句;
语法解析器802,用于根据目标SQL语句中的语法结构确定目标SQL语句对应的选择模式;
语法解析器802,还用于根据选择模式确定目标SQL语句对应的分区标识;
SQL执行器803,用于调用分区标识对应的分区数据,并执行目标SQL语句对应的命令。
下面以一应用场景对上述SQL语句解析装置中SQL编辑器、语法解析器及SQL执行器三者之间的交互进行描述:
用户使用${day}模式在SQL编辑器801上编辑的目标SQL语句,SQL编辑器801接收到该目标SQL语句后,将该目标SQL语句提交到语法解析器802中,SQL解析器802通过正则查找预定义的语法结构,如${day}模式语法,根据识别出的语法结构确定该目标SQL语句对应的选择模式,确定选择模式后,SQL解析器802结合当前时间与该目标SQL语句中的具体内容进行计算,得到分区标识,SQL解析器802再根据该分区标识将目标SQL语句的语法结构替换为原生语法结构,即将目标SQL语句转换成能够被底层系统识别的SQL语句,最后SQL解析802再将转换后的SQL语句提交到SQL执行器803中,SQL执行器803执行该转换后的SQL语句,并将执行结构返回给用户。
上面从功能模块的角度介绍了本发明实施例中的SQL语句解析装置,下面从硬件实体的角度介绍本发明实施例中的SQL语句解析装置,请参阅图9,图9是本发明实施例SQL语句解析装置的结构示意图。SQL语句解析装置90可包括输入设备910、输出设备920、处理器930和存储器940。
存储器940可以包括只读存储器和随机存取存储器,并向处理器930提供指令和数据。存储器940的一部分还可以包括非易失性随机存取存储器Non-Volatile RandomAccess Memory,NVRAM)。
存储器940存储了如下的元素,可执行模块或者数据结构,或者它们的子集,或者它们的扩展集:
操作指令:包括各种操作指令,用于实现各种操作。
操作系统:包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
本发明实施例中处理器930用于:
接收目标SQL语句,目标SQL语句的语法结构满足第一语法规则;
根据语法结构确定目标SQL语句对应的选择模式;
根据选择模式确定目标SQL语句对应的分区标识;
调用分区标识对应的分区数据,并执行目标SQL语句对应的命令。
处理器930控制SQL语句解析装置90的操作,处理器930还可以称为中央处理单元(Central Processing Unit,CPU)。存储器940可以包括只读存储器和随机存取存储器,并向处理器930提供指令和数据。存储器940的一部分还可以包括NVRAM。具体的应用中,SQL语句解析装置90的各个组件通过总线系统950耦合在一起,其中总线系统950除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统950。
上述本发明实施例揭示的方法可以应用于处理器930中,或者由处理器930实现。处理器930可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器930中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器930可以是通用处理器、数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器940,处理器930读取存储器940中的信息,结合其硬件完成上述方法的步骤。
图9的相关描述可以参阅图1或图2方法部分的相关描述和效果进行理解,本处不做过多赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-OnlyMemory,英文缩写:ROM)、随机存取存储器(英文全称:Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种结构化查询语言SQL语句解析方法,其特征在于,包括:
接收目标SQL语句,所述目标SQL语句的语法结构满足第一语法规则,其中,所述第一语法规则是用户新定义的有别于现有SQL语法结构的一种或多种的语法结构,满足第一语法规则的SQL语句,基于不同的内容对应于不同的执行命令;
根据所述语法结构确定所述目标SQL语句对应的选择模式,其中,设定不同类型的语法结构对应的选择模式,所述选择模式指的是实现目标SQL语句的过程中选择数据分区的具体方式,所述选择模式包括:选择与当前时间相隔指定时间的分区数据,或选择与当前时间最接近的分区数据,或选择与当前时间相隔指定时间区间的分区数据;
根据所述选择模式确定所述目标SQL语句对应的分区标识;
调用所述分区标识对应的分区数据,并执行所述目标SQL语句对应的命令。
2.根据权利要求1所述的方法,其特征在于,所述调用所述分区标识对应的数据,并执行所述目标SQL语句对应的命令包括:
将所述目标SQL语句转换成可识别SQL语句,所述可识别SQL语句包含所述分区标识,所述可识别SQL语句的语法结构能够被底层系统识别;
执行所述可识别SQL语句。
3.根据权利要求1至2中任一项所述的方法,其特征在于,所述根据语法结构确定所述目标SQL语句对应的选择模式包括:
通过正则表达式识别所述目标SQL语句中的语法结构;
确定所述语法结构对应的选择模式。
4.根据权利要求1至2中任一项所述的方法,其特征在于,所述根据所述选择模式确定所述目标SQL语句对应的分区标识包括:
提取所述目标SQL语句中的目标字符串,所述目标字符串为所述语法结构中用于计算分区标识的字符串;
根据所述目标字符串计算所述SQL语句对应的分区标识。
5.一种结构化查询语言SQL语句解析装置,其特征在于,包括:
接收模块,用于接收目标SQL语句,所述目标SQL语句的语法结构满足第一语法规则,其中,所述第一语法规则是用户新定义的有别于现有SQL语法结构的一种或多种的语法结构,满足第一语法规则的SQL语句,基于不同的内容对应于不同的执行命令;
第一确定模块,用于根据所述语法结构确定所述目标SQL语句对应的选择模式,其中,设定不同类型的语法结构对应的选择模式,所述选择模式指的是实现目标SQL语句的过程中选择数据分区的具体方式,所述选择模式包括:选择与当前时间相隔指定时间的分区数据,或选择与当前时间最接近的分区数据,或选择与当前时间相隔指定时间区间的分区数据;
第二确定模块,用于根据所述选择模式确定所述目标SQL语句对应的分区标识;
执行模块,用于调用所述分区标识对应的分区数据,并执行所述目标SQL语句对应的命令。
6.根据权利要求5所述的装置,其特征在于,所述执行模块包括:
转换单元,用于将所述目标SQL语句转换成可识别SQL语句,所述可识别SQL语句包含所述分区标识,所述可识别SQL语句的语法结构能够被底层系统识别;
执行单元,用于执行所述可识别SQL语句。
7.根据权利要求5至6中任一项所述的装置,其特征在于,所述第一确定模块包括:
识别单元,用于通过正则表达式识别所述目标SQL语句中的语法结构;
确定单元,用于确定所述语法结构对应的选择模式。
8.根据权利要求5至6中任一项所述的装置,其特征在于,所述第二确定模块包括:
提取单元,用于提取所述目标SQL语句中的目标字符串,所述目标字符串为所述语法结构中用于计算分区标识的字符串;
计算单元,用于根据所述目标字符串计算所述SQL语句对应的分区标识。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710053524.0A CN108345603B (zh) | 2017-01-22 | 2017-01-22 | 一种sql语句解析方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710053524.0A CN108345603B (zh) | 2017-01-22 | 2017-01-22 | 一种sql语句解析方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108345603A CN108345603A (zh) | 2018-07-31 |
CN108345603B true CN108345603B (zh) | 2022-08-19 |
Family
ID=62962782
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710053524.0A Active CN108345603B (zh) | 2017-01-22 | 2017-01-22 | 一种sql语句解析方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108345603B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110046169B (zh) | 2019-03-12 | 2021-09-07 | 创新先进技术有限公司 | 基于结构化查询语言语句的计算服务实现方案 |
CN110134706A (zh) * | 2019-04-01 | 2019-08-16 | 平安科技(深圳)有限公司 | Sql语句自动优化方法、装置、计算机设备以及存储介质 |
CN112579627B (zh) * | 2020-12-28 | 2024-02-23 | 上海明略人工智能(集团)有限公司 | Sql时间参数配置方法、系统、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011103579A2 (en) * | 2010-02-22 | 2011-08-25 | Vertica Systems, Inc. | Operating on time sequences of data |
CN104504200A (zh) * | 2014-12-23 | 2015-04-08 | 华中科技大学 | 一种用于旋转机械在线振动监测的趋势曲线图显示方法 |
CN105975617A (zh) * | 2016-05-20 | 2016-09-28 | 北京京东尚科信息技术有限公司 | 一种多分区表查询处理的方法和装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8595217B2 (en) * | 2009-01-09 | 2013-11-26 | Teradata Us, Inc. | Techniques for using database metric results |
US9805107B2 (en) * | 2011-12-09 | 2017-10-31 | Telduráðgevin Sp/f | Systems and methods for dynamic partitioning in a relational database |
US10380114B2 (en) * | 2014-09-26 | 2019-08-13 | Oracle International Corporation | System and method for generating rowid range-based splits in a massively parallel or distributed database environment |
CN104391995A (zh) * | 2014-12-15 | 2015-03-04 | 北京趣拿软件科技有限公司 | 一种sql语句审核的方法、数据库运维的方法及系统 |
CN105653647B (zh) * | 2015-12-28 | 2019-04-16 | 中国联合网络通信集团有限公司 | Sql语句的信息采集方法及系统 |
CN106250782B (zh) * | 2016-08-12 | 2019-04-09 | 天津西瑞尔信息工程有限公司 | 一种基于sql语句解析的数据权限控制方法及装置 |
-
2017
- 2017-01-22 CN CN201710053524.0A patent/CN108345603B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011103579A2 (en) * | 2010-02-22 | 2011-08-25 | Vertica Systems, Inc. | Operating on time sequences of data |
CN104504200A (zh) * | 2014-12-23 | 2015-04-08 | 华中科技大学 | 一种用于旋转机械在线振动监测的趋势曲线图显示方法 |
CN105975617A (zh) * | 2016-05-20 | 2016-09-28 | 北京京东尚科信息技术有限公司 | 一种多分区表查询处理的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108345603A (zh) | 2018-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107038207B (zh) | 一种数据查询方法、数据处理方法及装置 | |
CN110795455B (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
CN110908997B (zh) | 数据血缘构建方法、装置、服务器及可读存储介质 | |
US8219581B2 (en) | Method and system for analyzing ordered data using pattern matching in a relational database | |
US11593357B2 (en) | Databases and methods of storing, retrieving, and processing data | |
US10095731B2 (en) | Dynamically converting search-time fields to ingest-time fields | |
CN104133772A (zh) | 一种自动生成测试数据的方法 | |
CN108345603B (zh) | 一种sql语句解析方法及装置 | |
CN108829884B (zh) | 数据映射方法及装置 | |
CN111241182A (zh) | 数据处理方法和装置、存储介质和电子装置 | |
WO2018176822A1 (zh) | 一种操作ElasticSearch的方法及装置 | |
CN112015722A (zh) | 数据库管理方法、数据血缘分析方法以及相关装置 | |
CN110851511A (zh) | 数据同步的方法及装置 | |
CN107562429A (zh) | 一种基于编译规则的Android系统静态划分方法 | |
US10360204B2 (en) | User defined function, class creation for external data source access | |
CN108170661B (zh) | 一种规则文本的管理方法及系统 | |
US9330372B2 (en) | Generating an improved development infrastructure | |
CN116049141A (zh) | 一种基于多源异构数据的数据迁移方法及系统 | |
CN115495440A (zh) | 异构数据库的数据迁移方法、装置、设备及存储介质 | |
Bernard | Python recipes handbook: a problem-solution approach | |
US20140379691A1 (en) | Database query processing with reduce function configuration | |
CN112835932B (zh) | 业务表的批量处理方法及装置、非易失性存储介质 | |
CN113590651A (zh) | 一种基于hql的跨集群数据处理系统及方法 | |
CN103324640A (zh) | 一种确定搜索结果文档的方法、装置和设备 | |
JP5951729B2 (ja) | リアルタイム検索実現方法およびそのシステム |
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 |