一种SQL语句处理方法、装置、电子设备及存储介质与流程

专利2023-07-26  101

一种sql语句处理方法、装置、电子设备及存储介质
技术领域
:1.本技术涉及数据库
技术领域
:,尤其涉及一种sql语句处理方法、装置、电子设备及存储介质。
背景技术
::2.结构化查询语言(structuredquerylanguage,sql)被广泛应用于各式各样的数据库,用以提高计算机应用系统的工作质量以及效率。然而,为了满足特定的业务需求,例如,当用户的系统需要从一个数据库迁移到另一个数据库时,往往需要对sql进行改写以适应新的数据库系统。3.目前,对sql进行改写主要有以下方式:4.其一,用户自主修改所有的sql语法以适应新的数据库,但这种方式加重了用户的工作量。5.其二,各数据库产商对不同类型的sql语法进行兼容处理,以实现通用,然而不同的数据库厂商提供的数据库产品各有不同,且各数据库产品(例如,oracle、sqlserver、mysql、postgresql数据库等)的sql语法规范也不同。若数据库厂商对不同类型的sql语法进行兼容性处理,则对数据库产品的要求更高,加重了工作量,且实现复杂,甚至有些数据库产品难以实现。6.因此,如何实现语法兼容,以及简化sql语句的改写过程,是目前亟需解决的问题。技术实现要素:7.本发申请提供了一种sql语句处理方法,用以实现语法兼容,以及简化sql语法的改写过程。8.第一方面,提供一种sql语句处理方法,包括:9.接收客户端设备发送的sql请求,从所述sql请求中获取第一数据库的sql语句;对所述第一数据库的sql语句进行sql解析,得到所述sql语句对应的抽象语法树ast;对所述ast执行sql改写操作,得到目标数据库的目标ast;根据所述目标ast,生成所述目标ast对应的目标sql语句;根据所述目标sql语句,确定所述sql语句的响应数据,并向所述客户端设备发送sql请求响应,所述sql请求响应携带所述sql语句的响应数据。10.可选的,所述从所述sql请求中获取第一数据库的sql语句,包括:11.使用所述第一数据库的通讯协议,对所述sql请求进行解析,得到所述sql请求中所述第一数据库的sql语句。12.可选的,所述对所述第一数据库的sql语句进行sql解析,得到所述sql语句对应的ast,包括:13.对所述sql语句进行语法分析和词法分析,得到所述sql语句的语法特征和词法特征;根据所述语法特征和词法特征,生成所述sql语句对应的ast。14.可选的,所述根据所述目标sql语句,确定所述sql语句的响应数据,包括:15.使用所述目标数据库的通讯协议,将所述目标sql语句提交给所述目标数据库;从所述目标数据库中获取所述目标sql语句对应的目标响应数据;对所述目标响应数据进行编码,得到所述sql语句对应的响应数据。16.第二方面,提供一种sql语句处理装置,包括:17.接收请求模块,用于接收客户端设备发送的sql请求,从所述sql请求中获取第一数据库的sql语句;解析模块,用于对所述第一数据库的sql语句进行sql解析,得到所述sql语句对应的抽象语法树ast;改写模块,用于对所述ast执行sql改写操作,得到目标数据库的目标ast;生成模块,用于根据所述目标ast,生成所述目标ast对应的目标sql语句;请求响应模块,用于根据所述目标sql语句,确定所述sql语句的响应数据,并向所述客户端设备发送sql请求响应,所述sql请求响应携带所述sql语句的响应数据。18.可选的,所述接收请求模块,具体用于:19.使用所述第一数据库的通讯协议,对所述sql请求进行解析,得到所述sql请求中所述第一数据库的sql语句。20.可选的,所述解析模块,具体用于:21.对所述sql语句进行语法分析和词法分析,得到所述sql语句的语法特征和词法特征;根据所述语法特征和词法特征,生成所述sql语句对应的ast。22.可选的,所述请求响应模块,具体用于:23.使用所述目标数据库的通讯协议,将所述目标sql语句提交给所述目标数据库;从所述目标数据库中获取所述目标sql语句对应的目标响应数据;对所述目标响应数据进行编码,得到所述sql语句对应的响应数据。24.第三方面,提供一种电子设备,包括:25.存储器,用于存放计算机程序;处理器,用于执行所述存储器上所存放的计算机程序时,实现如第一方面中任一项所述的方法步骤。26.第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项所述的方法步骤。27.本技术实施例中,由于接收客户端设备发送的sql请求,从sql请求中获取第一数据库的sql语句,对第一数据库的sql语句进行解析,得到sql语句对应的抽象语法树ast,对ast进行改写,得到目标数据库的目标ast,根据目标ast,生成目标ast对应的目标sql语句,因此不需要对用户的应用程序进行修改,也不需要对目标数据库进行修改,从而简化了sql语句改写过程,也避免了不同数据库之间的语法不兼容问题。28.上述第二方面至第四方面中的各个方面以及各个方面可能达到的技术效果请参照上述针对第一方面或第一方面中的各种可能方案可以达到的技术效果说明,这里不再重复赘述。附图说明29.图1为目前的sql语句处理的逻辑示意图;30.图2为目前的sql语句处理的逻辑示意图;31.图3为本技术实施例适用的应用场景示意图;32.图4为本技术实施例提供的一种sql语句处理方法的流程图;33.图5为本技术实施例提供的一种sql语句改写样例示意图;34.图6为本技术实施例提供的一种sql语句处理装置的结构示意图;35.图7为本技术实施例提供的一种电子设备的结构示意图。具体实施方式36.为了使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术作进一步地详细描述。方法实施例中的具体操作方法也可以应用于装置实施例或系统实施例中。需要说明的是,在本技术的描述中“多个”理解为“至少两个”。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。a与b连接,可以表示:a与b直接连接和a与b通过c连接这两种情况。另外,在本技术的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。37.下面结合附图,对本技术实施例进行详细描述。38.为了更好地理解本技术实施例,下面首先对本技术实施例中涉及的技术术语进行说明。39.(1)数据库,是一种存储数据的软件,可以接受其它应用的数据存储和搜索请求,并进行响应。40.(2)sql,是用户操作数据库的一种语言,全称结构化查询语言,它是由关键字、字面值、操作符、注释、分隔符等组成的一个语句。41.(3)词法分析,是指通过词法规则将sql字符串分割为关键字、字面值、操作符、注释、分隔符等部分,是语法分析的基本单元。42.(4)语法分析,是指在语法分析结果的基础上,分析整个语句的语义,例如过滤条件是什么、需要查询哪些内容等。43.(5)抽象语法树(abstractsyntaxtree,ast),sql通过词法分析和语法分析处理之后的结果即是抽象语法树,它是一颗多叉树,每一个非叶子节点描述了一个sql片段的语义。44.(6)参数化sql,在一个应用中,一个sql的主体结构一般由关键字、操作符、注释、分隔符组成,而字面值则是变量,主体结构一般很少改变,而字面值则经常改变,所以一般把其主体结构称之为参数化sql。45.(7)sql改写,因为业务需要,而将抽象语法树的结构和内容进行修改,称之为sql改写,例如分布式数据库需要将sql拆解到不同的数据节点执行,又如mysql兼容服务需要将用户输入的mysql语法自动换算为目标数据库的语法。46.目前,用户自主修改所有的sql语法(sql语句)以适应新的数据库,具体逻辑如图1所示:修改应用程序上的sql语句,例如,将sql请求中的select‘user_name’from‘users’limt0.10修改为‘user_name’from‘users’limt10offset;更换驱动程序,将mysqljdbc驱动模块更换为postgresqljdbc驱动模块,使得迁移后,目标数据库(postgresql)能够适应源数据库(mysql)的sql语句。可以看出,用户的应用程序需要依据目标数据库语法进行改造,工作量大,易用性不高。47.目前,各数据库产商对不同类型的sql语法进行兼容处理,可通过修改数据库的语法解析模块来实现,具体逻辑如图2所示:例如,将应用程序模块的sql请求中的‘user_name’from‘users’limt0.10提交给更换后的驱动模块(将mysqljdbc驱动模块更换为postgresqljdbc驱动模块),postgresqljdbc驱动模块将该‘user_name’from‘users’limt0.10发送给目标数据库(postgresql)中的mysql语法解析模块,该mysql语法解析模块对其进行语法解析、改写等操作,再基于数据库引擎进行存储、处理等,使得迁移后,目标数据库(postgresql)能够适应源数据库(mysql)的sql语句。可以看出,一旦需要对目标数据库内核进行版本跨度较大的升级,需要对目标数据库重新进行开发与适配,不易维护。48.鉴于此,本技术实施例通过数据库代理的方式,将用户提交的sql语句,经过sql改写和兼容性处理后,转发到目标数据库。该方式既不需要对用户的应用程序进行修改,减轻用户的工作量,也不需要对驱动程序进行修改,还不需要对数据库进行升级改造,减轻了语法兼容部分的维护工作量,也能解决不同数据库之间的语法不兼容问题,还能简化sql语句改写过程。49.图3为本技术实施例适用的应用场景示意图。如图3所示,该场景主要包括客户端设备10、服务器11。其中,客户端设备10与服务器11可以进行有线通信或无线通信。50.客户端设备10是一种可以向用户提供语音和/或数据连通性的设备,例如,手机(mobilephone)、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobileinternetdevice,mid)等。可用于向服务器11发送sql请求。51.服务器11可用于处理客户端设备10发送的sql请求,例如,对sql请求中的sql语句进行解析、转换、修改、删除等处理,使得数据库适应各种类型的sql语句。52.图4为本技术实施例提供的一种sql语句处理方法的流程图。该流程可由服务器所执行(如图3中的服务器11),该服务器可由软件方式实现,也可由硬件方式实现,还可由软件与硬件结合的方式实现。如图所示,该流程包括如下步骤:53.401:接收客户端设备发送的sql请求,从该sql请求中获取第一数据库的sql语句。54.该客户端设备具体可以是图3中的客户端设备10,该第一数据库可以是目前所存在的任意一种类型的数据库,例如mysql数据库、oracle数据库等,本技术实施例在此不做限制。55.由于客户端设备将sql请求发送到服务器时,是一串二进制数据,需要将其解码为有意义的sql语句,因此,可通过以下方式进行解码:接收到该sql请求时,可使用第一数据库的通讯协议,对sql请求进行解析,得到sql请求中第一数据库的sql语句。该通讯协议是指将二进制数据按照约定的格式,解码成一连串有意义的信息,例如解码为“客户端设备提交了一个sql查询语句”。56.402:对该第一数据库的sql语句进行sql解析,得到sql语句对应的ast。57.可选的,得到sql语句对应的ast,可通过以下方式:对该sql语句进行语法分析和词法分析,得到该sql语句的语法特征和词法特征;根据语法特征和词法特征,生成sql语句对应的ast。举例来说,sql语句为selecta,b,cfromtable_1wherea》0,对该语句进行语法分析和词法分析,可以得到以下特征:“返回a,b,c”、“从table_1中查询”、“过滤条件是a》0”,根据上述特征的处理结果,生成该sql语句对应的ast。58.403:对上述ast执行sql改写操作,得到目标数据库的目标ast。59.该sql改写操作是指在该ast的基础上,基于设定的语法改写规则,将第一数据库的语法特征改写为目标数据库的语法特征,得到该目标数据库的目标ast,从而解决语法不兼容问题。举例来说,mysql(第一数据库)的语法特征是“select*fromtable_1limit10,5”,基于设定的语法改写规则对其进行修改,从而得到的postgresql(目标数据库)语法特征是“select*fromtable_1limit5offset10”。该改写操作可通过java编写,也可通过其他计算机语言编写,本技术实施例对此不做限制。60.图5示例性示出了本技术实施例提供的一种sql语句改写样例示意图。如图所示:61.groupby语法兼容是指:mysql语法中,对于聚合查询,返回值列表中出现中未进行聚合的字段u1.area,该mysql数据库可自动做兼容处理,但是,这样的语法在postgresql数据库存在歧义,会报错,因此要按规则进行处理,通过添加min函数来进行兼容处理。62.标识符、关键字改写:在mysql语法中对于标识符需要用包围符`进行包围,而在postgresql中使用的包围符是",因此,需要对其进行转换,达到兼容效果。63.函数转换:mysql的like语法与postgresql的ilike语法用法相同,为了保证兼容性,需将mysql的like语法转换为postgresql的ilike语法。64.类型推断和转换:因为这里用的是数字u1.age与字符串'60'比较,mysql会自动做隐式类型转换,而postgresql不具备这种功能,因此需对其进行类型转换。65.数据源识别:因为area这个值既出现在返回值列表,也出现在表里,将它直接拿来用会有歧义,但mysql会自动做兼容,而postgresql的语法不能存在歧义,否则会报错,因此这里需有数据源识别以排除语法歧义。66.参数化:自动识别sql中的常量(`60`)并转换为参数,这样就可以对改写过的语句进行预编译,提高性能,后续只要解析出来类似的sql参数,直接将该参数与预编译好的sql提交到目标数据库。67.需要说明的是,实际上涉及的语法可能会有几百个,这里在其中抽出了几个常见语法进行说明。68.可选的,在语法兼容处理过程中,还可包括以下处理环节:69.参数化sql与参数定位、环境变量与系统变量替代、sql递归语法兼容、序列值的使用与隐式调用处理、ast类型推断系统、sql类型转换与隐式转换、数据库与schema映射、二进制数据字面值转换、sql拆分与合并、事务拆分与合并等。70.404:根据上述目标ast,生成该目标ast对应的目标sql语句。71.该步骤中,将上述得到的目标ast进行形式转换,使之恢复为目标sql语句,该目标sql语句呈现形式可以为字符串,从而可以基于目标数据库的通讯协议提交到目标数据库进行处理。72.405:根据该目标sql语句,确定上述sql语句的响应数据,并向该客户端设备发送sql请求响应。其中,该sql请求响应携带sql语句的响应数据。73.可选的,确定上述sql语句的响应数据,可通过以下方式:使用目标数据库的通讯协议,将该目标sql语句提交给目标数据库,从该目标数据库中获取该目标sql语句对应的目标响应数据,对该目标响应数据进行编码,得到该sql语句对应的响应数据,以便用户能够得到合法的数据。74.本技术实施例中,由于接收客户端设备发送的sql请求,从sql请求中获取第一数据库的sql语句,对第一数据库的sql语句进行解析,得到sql语句对应的抽象语法树ast,对ast进行改写,得到目标数据库的目标ast,根据目标ast,生成目标ast对应的目标sql语句,因此不需要对用户的应用程序进行修改,也不需要对目标数据库进行修改,从而简化了sql语句改写过程,也避免了不同数据库之间的语法不兼容问题。75.基于相同的技术构思,本技术实施例还提供了一种sql语句处理装置,该装置可实现本技术实施例中上述sql语句处理方法的流程。76.图6为本技术实施例提供的一种sql语句处理装置,该装置包括:接收请求模块601、解析模块602、改写模块603、生成模块604、请求响应模块605。77.接收请求模块601,用于接收客户端设备发送的sql请求,从所述sql请求中获取第一数据库的sql语句。78.解析模块602,用于对所述第一数据库的sql语句进行sql解析,得到所述sql语句对应的抽象语法树ast。79.改写模块603,用于对所述ast执行sql改写操作,得到目标数据库的目标ast。80.生成模块604,用于根据所述目标ast,生成所述目标ast对应的目标sql语句。81.请求响应模块605,用于根据所述目标sql语句,确定所述sql语句的响应数据,并向所述客户端设备发送sql请求响应,所述sql请求响应携带所述sql语句的响应数据。82.可选的,接收请求模块601,具体用于:83.使用所述第一数据库的通讯协议,对所述sql请求进行解析,得到所述sql请求中所述第一数据库的sql语句。84.可选的,解析模块602,具体用于:85.对所述sql语句进行语法分析和词法分析,得到所述sql语句的语法特征和词法特征;根据所述语法特征和词法特征,生成所述sql语句对应的ast。86.可选的,请求响应模块,具体用于:87.使用所述目标数据库的通讯协议,将所述目标sql语句提交给所述目标数据库;从所述目标数据库中获取所述目标sql语句对应的目标响应数据;对所述目标响应数据进行编码,得到所述sql语句对应的响应数据。88.在此需要说明的是,本技术实施例提供的上述装置,能够实现上述sql语句处理方法实施例中的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。89.基于相同的技术构思,本技术实施例中还提供了一种电子设备,所述电子设备可以实现前述一种sql语句处理装置的功能。90.图7为本技术实施例提供的电子设备的结构示意图。91.至少一个处理器701,以及与至少一个处理器701连接的存储器702,本技术实施例中不限定处理器701与存储器702之间的具体连接介质,图7中是以处理器701和存储器702之间通过总线703连接为例。总线703在图7中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线703可以分为地址总线、数据总线、控制总线等,为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。或者,处理器701也可以称为控制器,对于名称不做限制。92.在本技术实施例中,存储器702存储有可被至少一个处理器701执行的指令,至少一个处理器701通过执行存储器702存储的指令,可以执行前文论述的一种sql语句处理方法。处理器701可以实现图7所示的装置中各个模块的功能。93.其中,处理器701是该装置的控制中心,可以利用各种接口和线路连接整个该控制设备的各个部分,通过运行或执行存储在存储器702内的指令以及调用存储在存储器702内的数据,该装置的各种功能和处理数据,从而对该装置进行整体监控。94.在一种可能的设计中,处理器701可包括一个或多个处理单元,处理器701可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、驾驶人员界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器701中。在一些实施例中,处理器701和存储器702可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。95.处理器701可以是通用处理器,例如中央处理器(cpu)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本技术实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本技术实施例所公开的一种sql语句处理方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。96.存储器702作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器702可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(randomaccessmemory,ram)、静态随机访问存储器(staticrandomaccessmemory,sram)、可编程只读存储器(programmablereadonlymemory,prom)、只读存储器(readonlymemory,rom)、带电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、磁性存储器、磁盘、光盘等等。存储器702是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本技术实施例中的存储器702还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。97.通过对处理器701进行设计编程,可以将前述实施例中介绍的一种sql语句处理方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行图1所示的实施例的一种泊车控制方法。如何对处理器701进行设计编程为本领域技术人员所公知的技术,这里不再赘述。98.在此需要说明的是,本技术实施例提供的上述通电子设备,能够实现上述方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。99.本技术实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于使计算机执行上述实施例中的一种泊车控制方法。100.本技术实施例还提供了一种计算机程序产品,所述计算机程序产品在被计算机调用时,使得所述计算机执行上述实施例中的一种sql语句处理方法。101.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。102.本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。103.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。104.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。105.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。当前第1页12当前第1页12
技术特征:
1.一种结构化查询语言sql语句处理方法,其特征在于,包括:接收客户端设备发送的sql请求,从所述sql请求中获取第一数据库的sql语句;对所述第一数据库的sql语句进行sql解析,得到所述sql语句对应的抽象语法树ast;对所述ast执行sql改写操作,得到目标数据库的目标ast;根据所述目标ast,生成所述目标ast对应的目标sql语句;根据所述目标sql语句,确定所述sql语句的响应数据,并向所述客户端设备发送sql请求响应,所述sql请求响应携带所述sql语句的响应数据。2.如权利要求1所述的方法,其特征在于,所述从所述sql请求中获取第一数据库的sql语句,包括:使用所述第一数据库的通讯协议,对所述sql请求进行解析,得到所述sql请求中所述第一数据库的sql语句。3.如权利要求1所述的方法,其特征在于,所述对所述第一数据库的sql语句进行sql解析,得到所述sql语句对应的ast,包括:对所述sql语句进行语法分析和词法分析,得到所述sql语句的语法特征和词法特征;根据所述语法特征和词法特征,生成所述sql语句对应的ast。4.如权利要求1-3任一项所述的方法,其特征在于,所述根据所述目标sql语句,确定所述sql语句的响应数据,包括:使用所述目标数据库的通讯协议,将所述目标sql语句提交给所述目标数据库;从所述目标数据库中获取所述目标sql语句对应的目标响应数据;对所述目标响应数据进行编码,得到所述sql语句对应的响应数据。5.一种结构化查询语言sql语句处理装置,其特征在于,包括:接收请求模块,用于接收客户端设备发送的sql请求,从所述sql请求中获取第一数据库的sql语句;解析模块,用于对所述第一数据库的sql语句进行sql解析,得到所述sql语句对应的抽象语法树ast;改写模块,用于对所述ast执行sql改写操作,得到目标数据库的目标ast;生成模块,用于根据所述目标ast,生成所述目标ast对应的目标sql语句;请求响应模块,用于根据所述目标sql语句,确定所述sql语句的响应数据,并向所述客户端设备发送sql请求响应,所述sql请求响应携带所述sql语句的响应数据。6.如权利要求5所述的装置,其特征在于,所述接收请求模块,具体用于:使用所述第一数据库的通讯协议,对所述sql请求进行解析,得到所述sql请求中所述第一数据库的sql语句。7.如权利要求5所述的装置,其特征在于,所述解析模块,具体用于:对所述sql语句进行语法分析和词法分析,得到所述sql语句的语法特征和词法特征;根据所述语法特征和词法特征,生成所述sql语句对应的ast。8.如权利要求5-7任一项所述的装置,其特征在于,所述请求响应模块,具体用于:使用所述目标数据库的通讯协议,将所述目标sql语句提交给所述目标数据库;从所述目标数据库中获取所述目标sql语句对应的目标响应数据;对所述目标响应数据进行编码,得到所述sql语句对应的响应数据。
9.一种电子设备,其特征在于,包括:存储器,用于存放计算机程序;处理器,用于执行所述存储器上所存放的计算机程序时,实现权利要求1-4中任一项所述的方法步骤。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-4任一项所述的方法步骤。

技术总结
本申请公开一种SQL语句处理方法、装置、电子设备及存储介质,涉及数据库技术领域。该方法包括:接收客户端设备发送的SQL请求,从所述SQL请求中获取第一数据库的SQL语句;对所述第一数据库的SQL语句进行SQL解析,得到所述SQL语句对应的抽象语法树AST;对所述AST执行SQL改写操作,得到目标数据库的目标AST;根据所述目标AST,生成所述目标AST对应的目标SQL语句;根据所述目标SQL语句,确定所述SQL语句的响应数据,并向所述客户端设备发送SQL请求响应,所述SQL请求响应携带所述SQL语句的响应数据。述SQL请求响应携带所述SQL语句的响应数据。述SQL请求响应携带所述SQL语句的响应数据。


技术研发人员:唐律 廖少波 钟小燕
受保护的技术使用者:天翼云科技有限公司
技术研发日:2022.07.20
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-4155.html

最新回复(0)