CN114764558A - 一种sql方言转换方法、装置、系统及存储介质 - Google Patents
一种sql方言转换方法、装置、系统及存储介质 Download PDFInfo
- Publication number
- CN114764558A CN114764558A CN202110051745.0A CN202110051745A CN114764558A CN 114764558 A CN114764558 A CN 114764558A CN 202110051745 A CN202110051745 A CN 202110051745A CN 114764558 A CN114764558 A CN 114764558A
- Authority
- CN
- China
- Prior art keywords
- identification information
- model
- processing
- syntax
- sql
- 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
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
-
- 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/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/253—Grammatical analysis; Style critique
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例涉及一种SQL方言转换方法、装置、系统及存储介质,该方法包括:获取待转换的SQL方言,以及与待转换的SQL方言对应的配置信息;对待转换的SQL方言进行解析,生成第一语法解析模型;根据配置信息,对第一语法解析模型进行处理,获取第二语法解析模型;根据配置信息和第二语法解析模型,生成目标SQL方言。该过程中,无需编写用以兼容不同数据库的SQL语言的业务代码。更不需要将待转换的SQL方言转换为某种特定的SQL语言,大大降低数据库维持脚本及其他开发成本。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种SQL方言转换方法、装置、系统及存储介质。
背景技术
开发人员在开发应用程序时,通常可以支持一种类型的数据库实现数据存储和调用等功能。但是现有技术中,基于不同用户所使用的数据库不同,应用程序需要具备支持在不同数据库类型之间灵活切换的能力。
为实现SQL方言转换,也即是实现不同类型数据库的SQL语言之间的转换,现有技术中,所采用的手段包括:其一,采用持久层框架Mybatis提供的数据库ID(databaseID)编写不同的SQL(Structured Query Language,简称SQL)语言来实现数据类型之间的切换。其二是采用JOOQ(基于Java访问关系型数据库的工具包)软件,来实现不同数据库类型之间的切换。具体参见图1所示。图1示出了现有的对象关系映射(Object Relational Mapping,ORM)框架从纵向看,可以支持单数据库类型。但是多数据库类型转换时,就存在很多问题。
例如,现有的两种实现方式中,通过Mybatis提供的databaseID编写不同的SQL语言来实现数据类型之间的切换的方案,其存在如下缺陷:
1)针对不同的数据库,数据库厂商所编写的SQL语言本身就存在差异性(不同SQL语言表述、适用语法等存在差异性,有些还可能存在数据库厂商自定义的字段、函数和表名等),如果需要实现不同数据库之间切换,为了实现SQL语言的兼容性,还需要编写多套与业务无关的代码,此外,更需要编写SQL适配代码,使得数据库脚本维护成本过高。2)Mybatis提供的databaseID不支持各种字段、函数和表名等的自定义映射功能。使得用户自行定义的一些字段无法在应用程序运行过程中直接调用,导致运行失败。3)数据库中的业务代码耦合严重,导致需要对数据库表进行升级优化时需要过高的成本。
而采用JOOQ软件实现则存在收费问题,同时也存在不支持各种字段、函数和表名等的自定义映射功能的问题。
即,上述两种SQL方言转换方法都存在其固有的缺陷,那么,如何获取一种能够克服上述缺陷的SQL方言转换方法,成为本申请亟待解决的技术问题。
发明内容
鉴于此,为解决现有技术中上述技术问题,本发明实施例提供一种SQL方言转换方法、装置、系统及存储介质。
第一方面,本发明实施例提供一种SQL方言转换方法,该方法包括:
获取待转换的SQL方言,以及与待转换的SQL方言对应的配置信息;
对待转换的SQL方言进行解析,生成第一语法解析模型;
根据配置信息,对第一语法解析模型进行处理,获取第二语法解析模型;
根据配置信息和第二语法解析模型,生成目标SQL方言。
在一个可能的实施方式中,配置信息中包括待处理对象,以及与处理规则对应的第一类标识信息,根据配置信息,对第一语法解析模型进行处理,获取第二语法解析模型,具体包括:
根据第一类标识信息,从预生成的规则链上调取与第一类标识信息中每一个标识信息对应的处理规则;
根据处理规则,对第一语法解析模型中包括的待处理对象进行处理后,获取第二语法解析模型。
在一个可能的实施方式中,对待转换的SQL方言进行解析,生成第一语法解析模型之后,方法还包括:
通过预构建的第一访问器,对第一语法解析模型进行遍历,获取与第一语法解析模型对应的第一解析内容;
基于第一解析内容,构建逻辑存储模型;以便后续根据配置信息对逻辑存储模型进行处理,获取第二语法解析模型。
在一个可能的实施方式中,第一解析内容中包括与第一解析内容对应的第二类标识信息,以及与第二类标识信息中的每一个标识信息对应的文本内容;
基于第一解析内容构建逻辑存储模型,具体包括:
将所第二类标识信息中的每一个标识信息均与预构建的存储模板中的预设关键字进行匹配;
当确定第一标识信息与存储模板中的预设关键字匹配时,将与第一标识信息对应的文本内容填充至与预设关键字对应的预设存储位置,其中,第一标识信息为第二类标识信息中的任一个标识信息;
直至与第二类标识信息中每一个标识信息对应的文本内容均填充至存储模板后,形成逻辑存储模型。
在一个可能的实施方式中,配置信息中包括待处理对象,以及与处理规则对应的第一类标识信息,根据配置信息,对逻辑存储模型进行处理,获取第二语法解析模型,具体包括:
根据第一类标识信息,从预生成的规则链上调取与第一类标识信息中每一个标识信息对应的处理规则;
根据处理规则对逻辑存储模型中的处理对象进行处理后,最终形成新的逻辑存储模型;
从新的逻辑存储模型中,提取第二语法解析模型。
在一个可能的实施方式中,处理规则包括如下中的一种或多种:方言转换规则、字段映射规则、函数转换规则、语法检查规则、数据权限规则、用户隔离规则、分库分表规则,或自定义规则。
在一个可能的实施方式中,配置信息中包括:目标SQL方言转换信息;
根据配置信息和第二语法解析模型,生成目标SQL方言,具体包括:
利用预配置的第二访问器,对第二语法解析模型进行遍历,获取与第二语法解析模型对应的第二解析内容;
根据目标SQL方言转换信息,对第二解析内容进行处理,生成目标SQL方言。
在一个可能的实施方式中,在对待转换的SQL方言进行解析,生成第一语法解析模型之前,方法还包括:
对待转换的SQL方言进行语法校验处理,和/或格式化处理。
在一个可能的实施方式中,在根据目标SQL方言转换信息,对第二解析内容进行处理,生成目标SQL方言之后,方法还包括:
对目标SQL方言进行语法校验处理,和/或格式化处理。
第二方面,本发明实施例提供一种SQL方言转换装置,该装置包括:
获取单元,用于获取待转换的SQL方言,以及与待转换的SQL方言对应的配置信息;
处理单元,用于对待转换的SQL方言进行解析,生成第一语法解析模型;
根据配置信息,对第一语法解析模型进行处理,获取第二语法解析模型;
根据配置信息和第二语法解析模型,生成目标SQL方言。
在一个可能的实施方式中,配置信息中包括待处理对象,以及与处理规则对应的第一类标识信息,处理单元具体用于,根据第一类标识信息,从预生成的规则链上调取与第一类标识信息中每一个标识信息对应的处理规则;
根据处理规则,对第一语法解析模型中包括的待处理对象进行处理后,获取第二语法解析模型。
在一个可能的实施方式中,处理单元还用于,通过预构建的第一访问器,对第一语法解析模型进行遍历,获取与第一语法解析模型对应的第一解析内容;
基于第一解析内容,构建逻辑存储模型;以便后续根据配置信息对逻辑存储模型进行处理,获取第二语法解析模型。
在一个可能的实施方式中,第一解析内容中包括与第一解析内容对应的第二类标识信息,以及与第二类标识信息中的每一个标识信息对应的文本内容;处理单元具体用于,将所第二类标识信息中的每一个标识信息均与预构建的存储模板中的预设关键字进行匹配;
当确定第一标识信息与存储模板中的预设关键字匹配时,将与第一标识信息对应的文本内容填充至与预设关键字对应的预设存储位置,其中,第一标识信息为第二类标识信息中的任一个标识信息;
直至与第二类标识信息中每一个标识信息对应的文本内容均填充至存储模板后,形成逻辑存储模型。
第三方面,本发明实施例提供一种SQL方言转换系统,该系统包括:
至少一个处理器和存储器;
处理器用于执行存储器中存储的SQL方言转换程序,以实现如第一方面任一实施方式所介绍的SQL方言转换方法。
第四方面,本发明实施例提供一种计算机存储介质,该计算机存储介质存储有一个或者多个程序,一个或者多个程序可被如第三方面所介绍的SQL方言转换系统执行,以实现如第一方面任一实施方式所介绍的SQL方言转换方法。
本发明实施例提供的一种SQL方言转换方法,通过获取待转换的SQL方言,以及与待转换的SQL方言对应的配置信息。对待转换的SQL方言进行解析后,基于解析后的内容生成第一语法解析模型。然后根据配置信息,对第一语法解析模型进行处理,获取第二语法解析模型。根据第二语法解析模型,生成目标SQL方言。在该处理过程中,无需编写用以兼容不同数据库的SQL语言的业务代码。更不需要将待转换的SQL方言转换为某种特定的SQL语言,大大降低数据库维持脚本。而且,只要预先配置好配置信息,例如在配置信息中配置不同字段、函数和表名等映射关系,根据配置信息,对第一语法解析模型进行处理,就可以实现不同字段、函数和表名等的映射,即使自定义字段和表名等也可以实现映射,使得应用程序得以正常运行。此外,通过上述方式,还可以完全隔离开发工程师和数据库工程师之间的代码开发工作,实现业务代码解耦,减去二者之间的开发负担,进而降低数据库表进行升级优化时的成本。
附图说明
图1为现有技术中不能通过ORM框架实现多数据库切换的结构示意图;
图2为本发明实施例提供的一种SQL方言转换方法流程示意图;
图3为本发明提供的SOL方言转换原理性结构框图;
图4为本发明提供的构建逻辑存储模型的方法流程示意图;
图5为本发明提供的存储模板类图;
图6为本发明提供的用户输入界面的示意图;
图7为本发明提供的不同SOL方言进行转换流程示意图;
图8为本发明提供的与图1相对应的,通过ORM框架实现多数据库切换的结构示意图;
图9为本发明实施例提供的一种SQL方言转换装置结构示意图;
图10为本发明实施例提供一种SQL方言转换系统结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为便于对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。
图2为本发明实施例提供的一种SQL方言转换方法流程示意图,如图2所示,该方法包括:
步骤210,获取待转换的SQL方言,以及与待转换的SQL方言对应的配置信息。
具体的,待转换的SQL方言可以是任一种SQL方言,不同的SQL方言,也即是针对不同的数据库,所编写的SQL语言。例如MySQL,Oracle,SQL server等对应的SQL语言。在输入时,本实施例与现有技术不同的是,不需要对待转换的SQL方言进行任何转换处理,也不需要将这些SQL方言转换为某种特定的SQL语句。从而保证不同SQL方言转换时的灵活性和广泛应用性。因此,这里仅仅是获取待转换的SQL方言和与之对应的配置信息,并执行后续的操作即可实现从一种SQL方言转换为另一种SQL方言。
与SQL方言对应的配置信息,用于指示将SQL方言进行某种处理,以便后续能够将当前的SQL方言,转换为目标SQL方言。具体的配置信息中的内容将在下文中进行说明。
步骤220,对待转换的SQL方言进行解析,生成第一语法解析模型。
具体的,在一个具体的例子中语法解析模型,实际就是对待转换的SQL方言进行解析,获取解析内容以及解析内容相关的属性信息,例如解析内容对应的类型、名称等等,并基于解析内容所形成的一个语法解析模型。在一个具体的例子中,语法解析模型可以是语法树,也可以是其他能够清楚地描述SQL方言组织架构、方言中的内容、方言中内容类型等信息的语法解析模型,具体是什么,这里不做过多限定。在本实施例中,以语法解析模型为语法树为例进行说明。树的概念很接近于一个语句结构的表示,例如一条select语句,它由select列表、where子句、排序字段、分组字段等组成,而select列表则由一个或多个select项组成,where子句又由一个或者多个where条件组成。在人类思维中,这种组成结构就是一个总分的逻辑结构,用树来表达,最合适不过。语法树中包括根节点和叶节点。每一个节点上对应的是解析内容标识信息和节点类型信息等。
因此,将对待转换的SQL方言进行解析后,生成的第一语法解析模型就可以视作为第一语法树。
在进行解析时,可以采用durid(SQL解析引擎)对待转换的SQL方言进行解析,生成第一语法树。具体的解析过程可参考现已公开的内容,这里不再过多赘述。
步骤230,根据配置信息,对第一语法解析模型进行处理,获取第二语法解析模型。
具体的,配置信息中包括待处理对象,以及与处理规则对应的第一类标识信息。步骤230具体包括:
根据第一类标识信息,从预生成的规则链上调取与第一类标识信息中每一个标识信息对应的处理规则;
根据处理规则,对第一语法解析模型中包括的待处理对象进行处理后,获取第二语法解析模型。
进一步的,规则链上的处理规则包括但不限于如下中的一种或多种:方言转换规则、字段映射规则、函数转换规则、语法检查规则、数据权限规则、用户隔离规则、分库分表规则,或自定义规则。
第一类标识信息,就是与例如上述所介绍的处理规则对应的标识信息,第一类标识信息可以是处理规则的名称,或者处理规则对应的编号等信息。
其中,配置信息可以是根据经验设定的,也可以是根据用户需求自定义设定的。
图3为本发明提供的SOL方言转换原理性结构框图,图3中显示的是统一逻辑访问模型,实际也就是本申请实施例中所提及的逻辑存储模型。在图3中可以看到上文所列举的几种处理规则,例如:方言转换规则、字段映射规则、函数转换规则、语法检查规则、安全检查规则、数据权限规则、用户隔离规则(图中显示的是租户隔离规则)、分库分表规则,或其他自定义规则等。
处理规则采用链式处理方式,增强系统的简便性。自定义规则也采用链式处理方式的情况下,可以方便用户进行个性化处理。具体操作时,处理规则采用规则引擎定义处理逻辑,因此可以动态新增。
下面,详细介绍上文所提及的处理规则及其功能:
方言转换规则,是从一种SQL方言转换为另一种SQL方言。
也即是本申请文件中所要达到的目的,可以供用户确定源SQL方言类型和目标SQL方言类型,然后方便后续进行转换。
字段映射规则,是从一个字段名映射到另一个字段名。
将一种SQL方言中的字段名映射为另一种字段名,也可以直接映射为用户自定义的字段名,使得该方案应用更加广泛。
函数转换规则:函数转换规则通过antlr自定义转换语法,方便灵活自定义函数进行转换。
因为不同SQL方言对应的函数不同,因此,当从一种SQL方言转换为另一种SQL方言时,还可以通过antlr自定义转换语法,方便函数灵活转换。
语法检查规则:对输入的SQL语法进行检查。
对SQL语法进行检查和校验,用以确保SQL方言的语法准确性。
数据权限规则:可以灵活定义数据权限规则,且数据权限规则不会受到物理存储模型变更影响。
当存在数据权限规则时,可以配置不同用户所具有的权限,只有具有相应权限的用户才能够查询或获取到与该权限对应的数据,以此保证数据不被轻易泄露。
用户(租户)隔离规则:自动添加用户(租户)信息。
一套系统可以支持多家用户。每个客户对于系统而言,都可理解为是租户。因此,用户信息也可以理解为租户信息。对于不同用户,用户信息进行隔离,保证所有用户信息安全。
分库分表规则:对需要分库分表的场景自动添加对应的分库分表逻辑。
具体的,当数据量足够大的时候,就需要进行分类存储。因此,可以配置分库分表规则,当使用时,可以采用字段查询方式查询某些数据存在哪个库的哪个表中。例如,通过IP地址来查询。当然,也可以根据用户号或用户其他信息进行哈希后,实现数据存储和数据查询等工作。
其他自定义规则:提供了强大的扩展点支持用户自定义自己规则。
当前配置的规则都是开发人员根据经验配置的规则。这些规则并不能满足所有用户需求,因此还可以提供扩展点,用以供用户自行配置规则。以便用户可以根据灵活配置的规则处理一些操作,使得用户体验度更高。例如,配置自定义的字段的映射规则,将用户自定义的字段,通过映射的方式映射成为目标SQL方言中的字段,以便映射后的字段得以在后续实现运行。又或者,配置自定义的函数映射规则,用户自定义的函数,转换为目标SQL方言中能够执行同等功能的函数。再者,将用户自定义的表名,映射为目标SQL方言中的表名等的映射规则。
当然,根据处理规则,对第一语法解析模型中包括的待处理对象进行处理后,获取第二语法解析模型的过程,也即是以上述处理规则的功能性定义的方式对第一语法树进行处理。
例如,字段映射规则,配置信息中会配置好当前待转换的SQL方言中的某一个字段,并且配置好该子段需要映射为什么样的字段,然后通过字段映射规则处理逻辑进行处理,完成字段映射。
有了上述处理规则,开发人员将不受数据库类型和字段,表名等变更影响,真正实现开发一套代码能够任意切换到不同存储的框架;一句话概括就是屏蔽底层物理存储模型的差异,让业务开发零代码切换数据库类型。
步骤240,根据配置信息和第二语法解析模型,生成目标SQL方言。
具体的,配置信息中包括:目标SQL方言转换信息。与第一语法解析模型相类似的,在本实施例中,将第二语法解析模型同样以第二语法树为例进行说明。
那么,根据第二语法树,生成目标SQL方言,则可以通过如下方式实现:
具体的,利用预配置的第二访问器,对第二语法解析模型进行遍历,获取与第二语法解析模型对应的第二解析内容;
根据目标SQL方言转换信息,对第二解析内容进行处理,生成目标SQL方言。
具体的,这里之所以说是第二访问器,其实是与下文中即将要提及的第一访问器进行区分。无论第一访问器还是第二访问器,实际就是指不同的访问器。
通常遍历语法树,使用访问(VISITOR)模式去遍历,而本申请文件中的访问器,也即是visitor,从根节点开始遍历,一直到最后一个叶子节点,整个遍历过程完成后,对这棵树所表达的语法含义,就已经被获取到。当然,有时候一次遍历可能不足以获取到所要获取的内容,那么,还可以进行多次遍历。至于遍历的方式,广度优先的遍历方式是最常见的。在对第二语法树进行遍历后,获取到解析内容。
目标SQL方言转换信息可以是目标SQL方言的标识信息,例如目标SQL方言的名称。不同的目标SQL方言所展示的形式不同,因此,首先需要知道工作人员想要转换的目标SQL方言,然后给根据目标SQL方言的不同,采用不同的方式对解析内容进行展示。即,根据目标SQL方言转换信息,对第二解析内容进行处理,生成目标SQL方言。
本发明实施例提供的一种SQL方言转换方法,通过获取待转换的SQL方言,以及与待转换的SQL方言对应的配置信息。对待转换的SQL方言进行解析后,基于解析后的内容生成第一语法解析模型。然后根据配置信息,对第一语法解析模型进行处理,获取第二语法解析模型。根据第二语法解析模型,生成目标SQL方言。在该处理过程中,无需编写用以兼容不同数据库的SQL语言的业务代码。更不需要将待转换的SQL方言转换为某种特定的SQL语言,大大降低数据库维持脚本。而且,只要预先配置好配置信息,例如在配置信息中配置不同字段、函数和表名等映射关系,根据配置信息,对第一语法解析模型进行处理,就可以实现不同字段、函数和表名等的映射,即使自定义字段和表名等也可以实现映射,使得应用程序得以正常运行。此外,通过上述方式,还可以完全隔离开发工程师和数据库工程师之间的代码开发工作,实现业务代码解耦,减去二者之间的开发负担,进而降低数据库表进行升级优化时的成本。
在本发明的另一个实施例中,考虑到上述实施例中,根据配置信息,对第一语法解析模型进行处理,获取第二语法解析模型时,如果有多个处理规则。那么就需要每执行一个处理规则时,都要遍历一次第一语法解析模型,获取到第一语法解析模型中待处理对象,然后再对待处理对象进行处理,操作比较繁琐,工作效率不是很高。
因此,在本实施例,提供了如下方法步骤,具体参见图4所示。对待转换的SQL方言进行解析,生成第一语法解析模型之后,该方法还包括:
步骤410,通过预构建的第一访问器,对第一语法解析模型进行遍历,获取与第一语法解析模型对应的第一解析内容。
步骤420,基于第一解析内容,构建逻辑存储模型;以便后续根据配置信息对逻辑存储模型进行处理,获取第二语法解析模型。
具体的,第一访问器类似上文所提及的第二访问器。第一访问器遍历第一语法解析模型的过程同第二访问器遍历第二语法解析模型过程类似,这里不再过多说明。
可选的,第一解析内容中包括与第一解析内容对应的第二类标识信息,以及与第二类标识信息中的每一个标识信息对应的文本内容。
基于第一解析内容,构建逻辑存储模型的过程可以参见如下:
将所第二类标识信息中的每一个标识信息均与预构建的存储模板中的预设关键字进行匹配。
当确定第一标识信息与存储模板中的预设关键字匹配时,将与第一标识信息对应的文本内容填充至与预设关键字对应的预设存储位置,其中,第一标识信息为第二类标识信息中的任一个标识信息;
直至与第二类标识信息中每一个标识信息对应的文本内容均填充至存储模板后,形成逻辑存储模型。
具体的,预构建的存储模板样式可以参见图5所示。图5示意出了存储模板类图。图5中包括预设关键字,例如原始SQL,目标SQL方言SQL Map,源方言类型、目标SQL方言类型列表、字段列表、表名列表、函数列表、SQL语法树、关键字或保留字列表,以及新的SQL语法树等。
第二类标识信息,实际也即是工作人员事先编写的包含有(或者就是)上述关键字的字段。
将第二类标识信息中的每一个标识信息分别与关键字进行匹配,一旦匹配成功,则说明与第一标识信息对应的文本内容需要填写至,与该关键字对应的预设存储位置。例如,原始SQL对应的字段值为MYSQL,那么将MYSQL填写至与原始SQL对应的预设存储位置。
当与第二类标识信息中每一个标识信息对应的文本内容均填充至存储模板后,就会形成逻辑存储模型。逻辑存储模型的组成结构与图5类似,仅仅是逻辑存储模型中的内容有了具体的填充。
可选的,配置信息中包括待处理对象,以及与处理规则对应的第一类标识信息,根据配置信息,对逻辑存储模型进行处理,获取第二语法解析模型,具体包括:
根据第一类标识信息,从预生成的规则链上调取与第一类标识信息中每一个标识信息对应的处理规则。
此过程参见上文中相同或类似操作,这里不再赘述。
根据处理规则对逻辑存储模型中的处理对象进行处理后,最终形成新的逻辑存储模型。
从新的逻辑存储模型中,提取第二语法解析模型。
具体的,根据处理规则,对逻辑存储模型中的处理对象进行处理过程同样同上文中对处理对象的处理方式类似,不同的是,所有的处理对象都包含在逻辑存储模型中,直接找到并处理即可。省去了每针对一个处理对象都要去第一语法解析模型(例如第一语法树)中去遍历来获取到的过程。省去繁琐的遍历过程,提高工作效率和准确率。
通过对逻辑存储模型中的处理对象进行处理后,最终形成新的逻辑存储模型。然后,从新的逻辑存储模型中,提取第二语法解析模型。
具体的,参见图5所示,实际上,获取的新的逻辑存储模型中将包括更新之后的SQL语法树。也即是,包含第二语法解析模型。因此,只要从新的逻辑存储模型中,提取出第二语法解析模型即可。
具体还可以参见图3所示,图3中除了示意出处理规则外,还示意出了输入原有代码SQL方言(如上所介绍的,并不局限于某种特定的SQL方言),然后对原始SQL方言进行解析转换,构建逻辑存储模型。通过配置信息获取处理规则,对逻辑存储模型进行规则处理,生成新的逻辑存储模型,并根据新的逻辑存储模型,生成目标SQL方言。图3中示意出的是可以根据需要输出多种物理存储访问语法,包括物理存储1至物理存储N实际就是输出多种目标SQL方言。
可选的,在执行上述操作任一种SQL方言转换方法实施例之前,首先需要确定用户需要对待转换的SQL方言进行何种转换,例如选择何种配置信息,转换为何种SQL方言等。而获取这些信息的方式,可以参见6所示。
图6示出的是户输入界面的示意图。用户可以通过该输入界面,输入源数据库类型,例如图6中显示的是MySQL;目标数据库类型,图6中显示的是Oracle;转换策略,也即是配置信息,例如图中显示的是驼峰转下滑线;表名策略转换和子弹策略转换等都选择开启状态,表字段映射,包括原表名,以及映射后的目标表名,源字段,和映射后的目标字段等,上述转换关系具体的运行代码参见黑色框图部分。只要用户触发“执行”控件,即可以执行方言转换,生成用户所需要的SQL方言。通过上述方式,可以将待转换的SQL方言任意转换为其他SQL方言。
在本发明的另一实施例中,考虑到待转换的SQL方言中可能存在某些SQL语句本身存在错误,例如SQL语句中的字段错误、语法错误等等。为了保证对待转换的SQL方言进行解析能获取比较精确的内容。因此,在对待转换的SQL方言进行解析,生成第一语法解析模型之前,方法还包括:
对待转换的SQL方言进行语法校验处理,和/或格式化处理。
如果语法校验和/或格式化处理等均通过,则执行后续步骤,否则,可以发出告警信息,告知工作人员对待转换的SQL方言进行修正处理。以保证语法和/或格式符合一定的要求。
具体的预处理过程参见现有技术中对于SQL语句进行预处理的方法,这里不再过多赘述。
类似的道理,在在根据目标SQL方言转换信息,对第二解析内容进行处理,生成目标SQL方言之后,该方法同样还可以包括:
对目标SQL方言进行语法校验处理,和/或格式化处理,以保证转换后的目标SQL方言后续可以正确运行。
图7中示出了本发明提供的不同SOL方言进行转换流程示意图。具体参见图7所示,图7示出了上述操作步骤的全过程。
例如,包括输入的SQL方言可以是MySQL,Oracle,SQL server,或其他方言等等。经过预处理(语法校验和/或格式校验)后,对SQL方言进行解析和转换,由此生成第一语法解析模型(或者,基于第一语法解析模型构建逻辑存储模型)。然后执行规则处理,例如图中示出的表名规则、字段规则、函数规则、关键字规则,以及其他规则等处理。经过规则处理后,生成第二语法解析模型(或生成新的逻辑存储模型,并从中获取第二语法解析模型),对第二语法解析模型进行转换后,得到目标SQL方言,再次经过一次预处理,完成最终操作,获取经过预处理后的目标SQL方言,方便后续直接使用。
图7中配置栏下方所显示的几个框图,包括SQL方言解析,即是与上文所对应的SQL方言解析代码;SQL方言转换,即是与上文所对应的SQL方言转换代码;规则处理,则是与上文对应的配置信息具体内容。Antlr,是用于实现函数转换的算法。这些内容都将预先配置好,并进行存储。而图7中示出的缓存,是指可以将已经映射好的表名、字段、或者函数等等已经建立好映射关系的内容进行缓存,方便后续使用。
通过上述过程,就可以实现不论横向还是纵向的SQL方言转换,也即是如图8所示的示意图。图8所要表达的意思就是,与图1所示的现有技术相对应的,本实施的方法可以实现从一种SQL方言转换为其他SQL方言。也可以将同一种SQL方言中的字段、表名等映射为同一种SQL方言中的另一种字段或表名等。由此,可以支持支持自定义字段和表名转换定义,方便支持不同类型的数据库对应的表字段命名规范不一致或者不同客户对数据库表字段命名有自己一套规范场景。
通过上述转换方式,省去遍历语法树的过程,仅仅是对逻辑存储模型中的内容按照处理规则进行处理,操作简单,方便,提升工作效率。
而且,引入逻辑存储模型,实现对业务层屏蔽了底层物理存储的差异,开发工程师在编写代码时,更加专注业务逻辑,无需顾及其他部门的代码开发等工作,大大提高新需求迭代效率和质量。统一逻辑模型支持通用处理规则,减少重复代码开发。处理规则还可以自己灵活配置,由此可以试用多种场景。实现SQL方言转换时,因为不需要限定特定方言,或者引入一套语法,仅仅沿用原有的SQL方言即可,真正实现了全方位同一数据访问模型。实现了一套源代码,在零代码改动的前提下,支持多种物理存储模型。迭代升级更灵活,极大减少微服务场景适配改造工作量。也正是因为一套源代码,就可实现转换为多种SQL方言,极大减少了开发和测试工作量,进而增强代码安全性和稳定性。
图9为本发明实施例提供的一种SQL方言转换装置,该装置包括:获取单元901和处理单元902。
获取单元901,用于获取待转换的SQL方言,以及与待转换的SQL方言对应的配置信息;
处理单元902,用于对待转换的SQL方言进行解析,生成第一语法解析模型;
根据配置信息,对第一语法解析模型进行处理,获取第二语法解析模型;
根据配置信息和第二语法解析模型,生成目标SQL方言。
可选的,配置信息中包括待处理对象,以及与处理规则对应的第一类标识信息,处理单元902具体用于,根据第一类标识信息,从预生成的规则链上调取与第一类标识信息中每一个标识信息对应的处理规则;
根据处理规则,对第一语法解析模型中包括的待处理对象进行处理后,获取第二语法解析模型。
可选的,处理单元902还用于,通过预构建的第一访问器,对第一语法树语法解析模型进行遍历,获取与第一语法树语法解析模型对应的第一解析内容;
基于第一解析内容,构建逻辑存储模型;以便后续根据配置信息对逻辑存储模型进行处理,获取第二语法解析模型。
可选的,第一解析内容中包括与第一解析内容对应的第二类标识信息,以及与第二类标识信息中的每一个标识信息对应的文本内容;处理单元902具体用于,将所第二类标识信息中的每一个标识信息均与预构建的存储模板中的预设关键字进行匹配;
当确定第一标识信息与存储模板中的预设关键字匹配时,将与第一标识信息对应的文本内容填充至与预设关键字对应的预设存储位置,其中,第一标识信息为第二类标识信息中的任一个标识信息;
直至与第二类标识信息中每一个标识信息对应的文本内容均填充至存储模板后,形成逻辑存储模型。
可选的,配置信息中包括待处理对象,以及与处理规则对应的第一类标识信息,处理单元902具体用于:
根据第一类标识信息,从预生成的规则链上调取与第一类标识信息中每一个标识信息对应的处理规则;
根据处理规则对逻辑存储模型中的处理对象进行处理后,最终形成新的逻辑存储模型;
从新的逻辑存储模型中,提取第二语法解析模型。
可选的,处理规则包括如下中的一种或多种:方言转换规则、字段映射规则、函数转换规则、语法检查规则、数据权限规则、用户隔离规则、分库分表规则,或自定义规则。
可选的,配置信息中包括:目标SQL方言转换信息;
处理单元902具体用于,利用预配置的第二访问器,对第二语法解析模型进行遍历,获取与第二语法解析模型对应的第二解析内容;
根据目标SQL方言转换信息,对第二解析内容进行处理,生成目标SQL方言。
可选的,处理单元902还用于,在对待转换的SQL方言进行解析,生成第一语法解析模型之前,对待转换的SQL方言进行语法校验处理,和/或格式化处理。
可选的,处理单元902还用于,在根据目标SQL方言转换信息,对第二解析内容进行处理,生成目标SQL方言之后,对目标SQL方言进行语法校验处理,和/或格式化处理。
本实施例提供的SQL方言转换装置中各功能部件所执行的功能均已在图2对应的实施例中做了详细介绍,因此这里不再赘述。
本发明实施例提供的一种SQL方言转换装置,通过获取待转换的SQL方言,以及与待转换的SQL方言对应的配置信息。对待转换的SQL方言进行解析后,基于解析后的内容生成第一语法解析模型。然后根据配置信息,对第一语法解析模型进行处理,获取第二语法解析模型。根据第二语法解析模型,生成目标SQL方言。在该处理过程中,无需编写用以兼容不同数据库的SQL语言的业务代码。更不需要将待转换的SQL方言转换为某种特定的SQL语言,大大降低数据库维持脚本。而且,只要预先配置好配置信息,例如在配置信息中配置不同字段、函数和表名等映射关系,根据配置信息,对第一语法解析模型进行处理,就可以实现不同字段、函数和表名等的映射,即使自定义字段和表名等也可以实现映射,使得应用程序得以正常运行。此外,通过上述方式,还可以完全隔离开发工程师和数据库工程师之间的代码开发工作,实现业务代码解耦,减去二者之间的开发负担,进而降低数据库表进行升级优化时的成本。
图10为本发明实施例提供的一种SQL方言转换系统的结构示意图,图10所示的SQL方言转换系统1000包括:至少一个处理器1001、存储器1002、至少一个网络接口1003和其他用户接口1004。SQL方言转换SQL方言转换系统1000中的各个组件通过总线系统1005耦合在一起。可理解,总线系统1005用于实现这些组件之间的连接通信。总线系统1005除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图10中将各种总线都标为总线系统1005。
其中,用户接口1004可以包括显示器、键盘或者点击设备(例如,鼠标,轨迹球(trackball)、触感板或者触摸屏等。
可以理解,本发明实施例中的存储器1002可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本文描述的存储器1002旨在包括但不限于这些和任意其它适合类型的存储器。
在一些实施方式中,存储器1002存储了如下的元素,可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作系统10021和应用程序10022。
其中,操作系统10021,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序10022,包含各种应用程序,例如媒体播放器(Media Player)、浏览器(Browser)等,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序10022中。
在本发明实施例中,通过调用存储器1002存储的程序或指令,具体的,可以是应用程序10022中存储的程序或指令,处理器1001用于执行各方法实施例所提供的方法步骤,例如包括:
获取待转换的SQL方言,以及与待转换的SQL方言对应的配置信息;
对待转换的SQL方言进行解析,生成第一语法解析模型;
根据配置信息,对第一语法解析模型进行处理,获取第二语法解析模型;
根据配置信息和第二语法解析模型,生成目标SQL方言。
可选的,配置信息中包括待处理对象,以及与处理规则对应的第一类标识信息;
根据第一类标识信息,从预生成的规则链上调取与第一类标识信息中每一个标识信息对应的处理规则;
根据处理规则,对第一语法解析模型中包括的待处理对象进行处理后,获取第二语法解析模型。
可选的,通过预构建的第一访问器,对第一语法解析模型进行遍历,获取与第一语法解析模型对应的第一解析内容;
基于第一解析内容,构建逻辑存储模型;以便后续根据配置信息对逻辑存储模型进行处理,获取第二语法解析模型。
可选的,第一解析内容中包括与第一解析内容对应的第二类标识信息,以及与第二类标识信息中的每一个标识信息对应的文本内容;
将所第二类标识信息中的每一个标识信息均与预构建的存储模板中的预设关键字进行匹配;
当确定第一标识信息与存储模板中的预设关键字匹配时,将与第一标识信息对应的文本内容填充至与预设关键字对应的预设存储位置,其中,第一标识信息为第二类标识信息中的任一个标识信息;
直至与第二类标识信息中每一个标识信息对应的文本内容均填充至存储模板后,形成逻辑存储模型。
可选的,配置信息中包括待处理对象,以及与处理规则对应的第一类标识信息;
根据第一类标识信息,从预生成的规则链上调取与第一类标识信息中每一个标识信息对应的处理规则;
根据处理规则对逻辑存储模型中的处理对象进行处理后,最终形成新的逻辑存储模型;
从新的逻辑存储模型中,提取第二语法解析模型。
可选的,处理规则包括如下中的一种或多种:方言转换规则、字段映射规则、函数转换规则、语法检查规则、数据权限规则、用户隔离规则、分库分表规则,或自定义规则。
可选的,配置信息中包括:目标SQL方言转换信息;
利用预配置的第二访问器,对第二语法解析模型进行遍历,获取与第二语法解析模型对应的第二解析内容;
根据目标SQL方言转换信息,对第二解析内容进行处理,生成目标SQL方言。
可选的,在对待转换的SQL方言进行解析,生成第一语法解析模型之前,对待转换的SQL方言进行语法校验处理,和/或格式化处理。
可选的,在根据目标SQL方言转换信息,对第二解析内容进行处理,生成目标SQL方言之后,对目标SQL方言进行语法校验处理,和/或格式化处理。
上述本发明实施例揭示的方法可以应用于处理器1001中,或者由处理器1001实现。处理器1001可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1001中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1001可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1002,处理器1001读取存储器1002中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSPDevice,DSPD)、可编程逻辑设备(Programmable LogicDevice,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文功能的单元来实现本文的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
本实施例提供的SQL方言转换系统可以是如图10中所示的SQL方言转换系统,可执行如图2中SQL方言转换方法的所有步骤,进而实现图2所示SQL方言转换方法的技术效果,具体请参照图2相关描述,为简洁描述,在此不作赘述。
本发明实施例还提供了一种存储介质(计算机可读存储介质)。这里的存储介质存储有一个或者多个程序。其中,存储介质可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘;存储器还可以包括上述种类的存储器的组合。
当存储介质中一个或者多个程序可被一个或者多个处理器执行,以实现上述在SQL方言转换系统侧执行的SQL方言转换方法。
处理器用于执行存储器中存储的SQL方言转换程序,以实现以下在SQL方言转换系统侧执行的SQL方言转换方法的步骤:
获取待转换的SQL方言,以及与待转换的SQL方言对应的配置信息;
对待转换的SQL方言进行解析,生成第一语法解析模型;
根据配置信息,对第一语法解析模型进行处理,获取第二语法解析模型;
根据配置信息和第二语法解析模型,生成目标SQL方言。
可选的,配置信息中包括待处理对象,以及与处理规则对应的第一类标识信息;
根据第一类标识信息,从预生成的规则链上调取与第一类标识信息中每一个标识信息对应的处理规则;
根据处理规则,对第一语法解析模型中包括的待处理对象进行处理后,获取第二语法解析模型。
可选的,通过预构建的第一访问器,对第一语法解析模型进行遍历,获取与第一语法解析模型对应的第一解析内容;
基于第一解析内容,构建逻辑存储模型;以便后续根据配置信息对逻辑存储模型进行处理,获取第二语法解析模型。
可选的,第一解析内容中包括与第一解析内容对应的第二类标识信息,以及与第二类标识信息中的每一个标识信息对应的文本内容;
将所第二类标识信息中的每一个标识信息均与预构建的存储模板中的预设关键字进行匹配;
当确定第一标识信息与存储模板中的预设关键字匹配时,将与第一标识信息对应的文本内容填充至与预设关键字对应的预设存储位置,其中,第一标识信息为第二类标识信息中的任一个标识信息;
直至与第二类标识信息中每一个标识信息对应的文本内容均填充至存储模板后,形成逻辑存储模型。
可选的,配置信息中包括待处理对象,以及与处理规则对应的第一类标识信息;
根据第一类标识信息,从预生成的规则链上调取与第一类标识信息中每一个标识信息对应的处理规则;
根据处理规则对逻辑存储模型中的处理对象进行处理后,最终形成新的逻辑存储模型;
从新的逻辑存储模型中,提取第二语法解析模型。
可选的,处理规则包括如下中的一种或多种:方言转换规则、字段映射规则、函数转换规则、语法检查规则、数据权限规则、用户隔离规则、分库分表规则,或自定义规则。
可选的,配置信息中包括:目标SQL方言转换信息;
利用预配置的第二访问器,对第二语法解析模型进行遍历,获取与第二语法解析模型对应的第二解析内容;
根据目标SQL方言转换信息,对第二解析内容进行处理,生成目标SQL方言。
可选的,在对待转换的SQL方言进行解析,生成第一语法解析模型之前,对待转换的SQL方言进行语法校验处理,和/或格式化处理。
可选的,在根据目标SQL方言转换信息,对第二解析内容进行处理,生成目标SQL方言之后,对目标SQL方言进行语法校验处理,和/或格式化处理。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (15)
1.一种SQL方言转换方法,其特征在于,所述方法包括:
获取待转换的SQL方言,以及与所述待转换的SQL方言对应的配置信息;
对所述待转换的SQL方言进行解析,生成第一语法解析模型;
根据所述配置信息,对所述第一语法解析模型进行处理,获取第二语法解析模型;
根据所述配置信息和所述第二语法解析模型,生成目标SQL方言。
2.根据权利要求1所述的方法,其特征在于,所述配置信息中包括待处理对象,以及与所述处理规则对应的第一类标识信息,所述根据所述配置信息,对所述第一语法解析模型进行处理,获取第二语法解析模型,具体包括:
根据所述第一类标识信息,从预生成的规则链上调取与所述第一类标识信息中每一个标识信息对应的处理规则;
根据所述处理规则,对所述第一语法解析模型中包括的所述待处理对象进行处理后,获取所述第二语法解析模型。
3.根据权利要求1所述的方法,其特征在于,所述对所述待转换的SQL方言进行解析,生成第一语法解析模型之后,所述方法还包括:
通过预构建的第一访问器,对所述第一语法解析模型进行遍历,获取与所述第一语法解析模型对应的第一解析内容;
基于所述第一解析内容,构建逻辑存储模型;以便后续根据所述配置信息对所述逻辑存储模型进行处理,获取所述第二语法解析模型。
4.根据权利要求3所述的方法,其特征在于,所述第一解析内容中包括与所述第一解析内容对应的第二类标识信息,以及与第二类标识信息中的每一个标识信息对应的文本内容;
所述基于所述第一解析内容构建所述逻辑存储模型,具体包括:
将所第二类标识信息中的每一个标识信息均与预构建的存储模板中的预设关键字进行匹配;
当确定第一标识信息与所述存储模板中的预设关键字匹配时,将与所述第一标识信息对应的文本内容填充至与所述预设关键字对应的预设存储位置,其中,所述第一标识信息为所述第二类标识信息中的任一个标识信息;
直至与所述第二类标识信息中每一个标识信息对应的文本内容均填充至所述存储模板后,形成所述逻辑存储模型。
5.根据权利要求3所述的方法,其特征在于,所述配置信息中包括待处理对象,以及与所述处理规则对应的第一类标识信息,所述根据所述配置信息,对所述逻辑存储模型进行处理,获取所述第二语法解析模型,具体包括:
根据所述第一类标识信息,从预生成的规则链上调取与所述第一类标识信息中每一个标识信息对应的处理规则;
根据所述处理规则对所述逻辑存储模型中的处理对象进行处理后,最终形成新的逻辑存储模型;
从所述新的逻辑存储模型中,提取所述第二语法解析模型。
6.根据权利要求2或5所述的方法,其特征在于,所述处理规则包括如下中的一种或多种:方言转换规则、字段映射规则、函数转换规则、语法检查规则、数据权限规则、用户隔离规则、分库分表规则,或自定义规则。
7.根据权利要求1-5任一项所述的方法,其特征在于,所述配置信息中包括:所述目标SQL方言转换信息;
所述根据所述配置信息和所述第二语法解析模型,生成所述目标SQL方言,具体包括:
利用预配置的第二访问器,对所述第二语法解析模型进行遍历,获取与所述第二语法解析模型对应的第二解析内容;
根据所述目标SQL方言转换信息,对所述第二解析内容进行处理,生成所述目标SQL方言。
8.根据权利要求1-5任一项所述的方法,其特征在于,在对所述待转换的SQL方言进行解析,生成第一语法解析模型之前,所述方法还包括:
对所述待转换的SQL方言进行语法校验处理,和/或格式化处理。
9.根据权利要求1-3任一项所述的方法,其特征在于,在根据所述目标SQL方言转换信息,对所述第二解析内容进行处理,生成所述目标SQL方言之后,所述方法还包括:
对所述目标SQL方言进行语法校验处理,和/或格式化处理。
10.一种SQL方言转换装置,其特征在于,所述装置包括:
获取单元,用于获取待转换的SQL方言,以及与所述待转换的SQL方言对应的配置信息;
处理单元,用于对所述待转换的SQL方言进行解析,生成第一语法解析模型;
根据所述配置信息,对所述第一语法解析模型进行处理,获取第二语法解析模型;
根据所述配置信息和所述第二语法解析模型,生成目标SQL方言。
11.根据权利要求10所述的装置,其特征在于,所述配置信息中包括待处理对象,以及与所述处理规则对应的第一类标识信息,处理单元具体用于,根据所述第一类标识信息,从预生成的规则链上调取与所述第一类标识信息中每一个标识信息对应的处理规则;
根据所述处理规则,对所述第一语法解析模型中包括的所述待处理对象进行处理后,获取所述第二语法解析模型。
12.根据权利要求10所述的装置,其特征在于,处理单元还用于,通过预构建的第一访问器,对所述第一语法解析模型进行遍历,获取与所述第一语法解析模型对应的第一解析内容;
基于所述第一解析内容,构建逻辑存储模型;以便后续根据所述配置信息对所述逻辑存储模型进行处理,获取所述第二语法解析模型。
13.根据权利要求12所述的装置,其特征在于,所述第一解析内容中包括与所述第一解析内容对应的第二类标识信息,以及与第二类标识信息中的每一个标识信息对应的文本内容;处理单元具体用于,将所第二类标识信息中的每一个标识信息均与预构建的存储模板中的预设关键字进行匹配;
当确定第一标识信息与所述存储模板中的预设关键字匹配时,将与所述第一标识信息对应的文本内容填充至与所述预设关键字对应的预设存储位置,其中,所述第一标识信息为所述第二类标识信息中的任一个标识信息;
直至与所述第二类标识信息中每一个标识信息对应的文本内容均填充至所述存储模板后,形成所述逻辑存储模型。
14.一种SQL方言转换系统,其特征在于,所述系统包括:至少一个处理器和存储器;
所述处理器用于执行所述存储器中存储的SQL方言转换程序,以实现权利要求1~9中任一项所述的SQL方言转换方法。
15.一种计算机存储介质,其特征在于,所述计算机存储介质存储有一个或者多个程序,所述一个或者多个程序可被如权利要求14所述的SQL方言转换系统执行,以实现权利要求1~9中任一项所述的SQL方言转换方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110051745.0A CN114764558A (zh) | 2021-01-14 | 2021-01-14 | 一种sql方言转换方法、装置、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110051745.0A CN114764558A (zh) | 2021-01-14 | 2021-01-14 | 一种sql方言转换方法、装置、系统及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114764558A true CN114764558A (zh) | 2022-07-19 |
Family
ID=82362879
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110051745.0A Pending CN114764558A (zh) | 2021-01-14 | 2021-01-14 | 一种sql方言转换方法、装置、系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114764558A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117033348A (zh) * | 2023-08-23 | 2023-11-10 | 中电金信软件有限公司 | Sql转换方法、装置、计算机设备和存储介质 |
CN117349332A (zh) * | 2023-12-06 | 2024-01-05 | 宁波港信息通信有限公司 | 一种应用程序编程接口api的生成方法、装置和电子设备 |
-
2021
- 2021-01-14 CN CN202110051745.0A patent/CN114764558A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117033348A (zh) * | 2023-08-23 | 2023-11-10 | 中电金信软件有限公司 | Sql转换方法、装置、计算机设备和存储介质 |
CN117349332A (zh) * | 2023-12-06 | 2024-01-05 | 宁波港信息通信有限公司 | 一种应用程序编程接口api的生成方法、装置和电子设备 |
CN117349332B (zh) * | 2023-12-06 | 2024-03-01 | 宁波港信息通信有限公司 | 一种应用程序编程接口api的生成方法、装置和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11669503B2 (en) | Building and managing data-processing attributes for modeled data sources | |
US11269694B2 (en) | Automated API code generation | |
US8032544B2 (en) | Methods and apparatus for generating dynamic program files based on input queries that facilitate use of persistent query services | |
US20040158820A1 (en) | System for generating an application framework and components | |
US8695006B2 (en) | Resource management method | |
JP2012504826A (ja) | 拡張可能な構文を有するプログラミング言語 | |
CN112235311B (zh) | Ovsdb客户端代码自动生成方法、系统、设备及介质 | |
WO2019237333A1 (en) | Converting database language statements between dialects | |
US20150261507A1 (en) | Validating sql queries in a report | |
CN108647300B (zh) | 数据库访问中间系统、方法、设备及存储介质 | |
US11995075B2 (en) | System and method for efficient transliteration of machine interpretable languages | |
CN114328574A (zh) | 一种数据查询方法、装置、电子设备及计算机可读存储介质 | |
CN112560100A (zh) | 数据脱敏方法及装置、计算机可读存储介质、电子设备 | |
CN114764558A (zh) | 一种sql方言转换方法、装置、系统及存储介质 | |
AU2017332710B2 (en) | Method for automated detection, correction, and translation of un-localized lines | |
CN115599386A (zh) | 代码生成方法、装置、设备及存储介质 | |
WO2020024778A1 (zh) | xml文件批量修改方法、系统、设备和计算机可读存储介质 | |
CN113608748B (zh) | C语言转换Java语言的数据处理方法、装置及设备 | |
CN116955393A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN115794858A (zh) | 查询语句处理方法、装置、设备及存储介质 | |
CN112380142A (zh) | 接口文档管理方法、装置和测试设备 | |
CN112860584A (zh) | 基于工作流模型的测试方法及装置 | |
Kosanović et al. | Applang–A DSL for specification of mobile applications for android platform based on textX | |
CN117236290A (zh) | 一种数据库语言转化方法、装置、设备及存储介质 | |
CN114489682B (zh) | nginx配置文件的操作方法、装置和设备 |
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 |