CN116226170A - 一种数据库语句转换方法、装置、电子设备及存储介质 - Google Patents

一种数据库语句转换方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116226170A
CN116226170A CN202310246164.1A CN202310246164A CN116226170A CN 116226170 A CN116226170 A CN 116226170A CN 202310246164 A CN202310246164 A CN 202310246164A CN 116226170 A CN116226170 A CN 116226170A
Authority
CN
China
Prior art keywords
statement
database
target
target database
query
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
Application number
CN202310246164.1A
Other languages
English (en)
Inventor
孙超飞
李亚男
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Genyan Network Technology Co ltd
Original Assignee
Shanghai Genyan Network Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Genyan Network Technology Co ltd filed Critical Shanghai Genyan Network Technology Co ltd
Priority to CN202310246164.1A priority Critical patent/CN116226170A/zh
Publication of CN116226170A publication Critical patent/CN116226170A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种数据库语句转换方法、装置、电子设备及存储介质,该方法包括:获得原始数据库语句和目标数据库的类型;对原始数据库语句进行解析,获得查询语句片段;判断查询语句片段中是否包含预设字段,获得识别结果;根据目标数据库的类型和识别结果,将查询语句片段转换为目标数据库语句。通过将原始数据库语言进行解析并判断其中是否包含预设字段,根据目标数据库的类型和识别结果,即可将查询语句片段转换为目标数据库语句。提高数据库语言转换的效率,改善分别为每一数据库编写该数据库类型对应的数据库语言,造成处理效率较低的问题。

Description

一种数据库语句转换方法、装置、电子设备及存储介质
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种数据库语句转换方法、装置、电子设备及存储介质。
背景技术
目前,企业机构等通常需要构建大容量存储设备,对海量用户信息以及交易数据等数据信息进行存储,这些数据信息通常以数据库形式存储于存储设备中。一些大型企业可能会配置有不同类型的数据库,现有技术在兼容这些数据库时,通常需要开发人员对每一数据库对应编写一份与之适用的数据库语言,导致工作量较大且处理效率较低。
发明内容
本发明实施例的目的在于一种数据库语句转换方法、装置、电子设备及存储介质,对原有数据库语句进行解析,并根据解析后的查询语句片段进行目标数据库语句的转换,提高数据库语言转换的效率。
第一方面,本申请实施例提供了一种数据库语句转换方法,包括:获得原始数据库语句和目标数据库的类型;对原始数据库语句进行解析,获得查询语句片段;判断查询语句片段中是否包含预设字段,获得识别结果;根据目标数据库的类型和识别结果,将查询语句片段转换为目标数据库语句。
在上述的实现过程中,通过将原始数据库语言进行解析并判断其中是否包含预设字段,根据识别结果和目标数据库的类型,即可将查询语句片段转换为目标数据库语句。提高数据库语言转换的效率,改善分别为每一数据库编写该数据库类型对应的数据库语言,造成处理效率较低的问题。
可选的,在本申请实施例中,识别结果包括查询语句片段中不包含预设字段;根据目标数据库的类型和识别结果,将查询语句片段转换为目标数据库语句,包括:从查询语句片段中确定待转换内容;查询语句片段包括:语句类型、所用函数、表名、字段名、关键字、查询信息和条件信息中的至少一项;根据目标数据库的类型,获得待转换内容对应的目标内容;目标内容为在预设的目标数据库的语句转换类中获得的;将查询语句片段中的待转换内容替换为目标内容,获得目标数据库语句。
在上述的实现过程中,若识别结果包括查询语句片段中不包含预设字段,则将查询语句片段中的待转换内容替换为目标内容,获得目标数据库语句,实现数据库语言快速转换。并根据识别结果进行数据库语句转换,提高转换的准确率。
可选的,在本申请实施例中,识别结果包括查询语句片段中包含预设字段;根据目标数据库的类型和识别结果,将查询语句片段转换为目标数据库语句,包括:若识别到查询语句片段中包含预设字段,则根据目标数据库的类型,获得预设字段对应的语法格式;基于语法格式,对查询语句片段进行转换,获得目标数据库语句。
在上述的实现过程中,在识别到查询语句片段中包含预设字段后,根据预设字段对应的语法格式,对查询语句片段进行转换,获得目标数据库语句,提高数据库语言转换的准确率。
可选的,在本申请实施例中,在判断查询语句片段中是否包含预设字段,获得识别结果之前,方法还包括:根据原始数据库的类型,确定预设字段,并对预设字段进行注册标识,以使预设字段被识别;预设字段为若将查询语句片段转换为目标数据库语句,查询语句中需要进行语句结构转换的字段。
在上述的实现过程中,对于转换过程中需要进行语法格式转换的预设字段进行注册标识,识别到预设字段之后即可按照对应的语法格式进行语句转换,提高数据库语言转换的准确率。
可选的,在本申请实施例中,获得新增业务语句;新增业务语句为基于原始数据库的语言生成的;根据目标数据库的类型,将新增业务语句转换为目标数据库新增业务语句。
在上述的实现过程中,通过新增业务语句转换为目标数据库新增业务语句,改善冗余的数据库语言造成数据库维护困难的问题,降低数据库维护成本。并且仅需编写新增业务语句,减少重复工作,提高工作效率。
可选的,在本申请实施例中,获得原始数据库语句,包括:通过拦截器获取用于与原始数据库进行交互的原始数据库语句;原始数据库语句包括增加语句、删除语句、修改语句和查询语句。
在上述的实现过程中,通过拦截器获取用于与原始数据库进行交互的所有原始数据库语句,利用原始数据库语句进行数据库语言转换,提高数据库语言转换的效率。
可选的,在本申请实施例中,在根据目标数据库的类型和识别结果,将查询语句片段转换为目标数据库语句之后,方法还包括:根据目标数据库语句,生成目标数据库程序包;通过目标数据库程序包,将原始数据库切换为目标数据库。
在上述的实现过程中,将目标代码程序包连接至目标数据库,实现将原始数据库切换为目标数据库。
第二方面,本申请实施例还提供了一种数据库语句转换装置,包括:获取模块,用于获得原始数据库语句;解析模块,用于对原始数据库语句进行解析,获得查询语句片段;判断模块,用于判断查询语句片段中是否包含预设字段,获得识别结果;转换模块,用于根据目标数据库的类型和识别结果,将查询语句片段转换为目标数据库语句。
第三方面,本申请实施例还提供了一种电子设备,包括:处理器和存储器,存储器存储有处理器可执行的机器可读指令,机器可读指令被处理器执行时执行如上面描述的方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上面描述的方法。
采用本申请提供数据库语句转换方法、装置、电子设备及存储介质,通过将原始数据库语言进行解析并判断其中是否包含预设字段,根据目标数据库的类型和识别结果,即可将查询语句片段转换为目标数据库语句。提高数据库语言转换的效率,改善分别为每一数据库编写该数据库类型对应的数据库语言,造成处理效率较低的问题。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的现有技术的数据库语句转换方法的流程示意图;
图2为本申请第一种实施例提供的一种数据库语句转换方法的流程示意图;
图3为本申请第二种实施例提供的一种数据库语句转换方法的流程示意图;
图4为本申请实施例提供的数据库语句转换装置的结构示意图;
图5为本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合附图对本申请技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本申请的技术方案,因此只作为示例,而不能以此来限制本申请的保护范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。
在本申请实施例的描述中,技术术语“第一”、“第二”等仅用于区别不同对象,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量、特定顺序或主次关系。在本申请实施例的描述中,“多个”的含义是两个及以上,除非另有明确具体的限定。
请参见图1示出的本申请第一种实施例提供的现有技术的数据库语句转换方法的流程示意图。
现有技术的系统若需要兼容多种类型的数据库,在分页查询时需要区分数据库类型或名称,示例性的,数据库类型可以包括MySQL数据库、Oracle数据库和SqlServer数据库。然后分别为每一数据库编写该数据库类型对应的数据库语言,即使是同一功能的查询语句也需要重写对应的数据库语言以适应不同数据库的语法及函数。这种方式会在造成代码冗余,相同功能的数据库语句需要根据所兼容的数据库重写多条,工作效率较低并且数据库不易维护。
本申请实施例提供一种数据库语句转换方法,对原有数据库语句进行解析,并根据解析后的查询语句片段进行目标数据库语句的组装,提高数据库语言转换的效率。
请参见图2示出的本申请实施例提供的一种数据库语句转换方法的流程示意图。本申请实施例提供的数据库语句转换方法可以应用于电子设备,该电子设备可以包括终端以及服务器;其中终端具体可以为智能手机、平板电脑、计算机、个人数字助理(PersonalDigital Assitant,PDA)等;服务器具体可以为应用服务器,也可以为Web服务器。该数据库语句转换方法可以包括以下步骤:
步骤S110:获得原始数据库语句和目标数据库的类型。
步骤S120:对原始数据库语句进行解析,获得查询语句片段。
步骤S130:判断查询语句片段中是否包含预设字段,获得识别结果。
步骤S140:根据目标数据库的类型和识别结果,将查询语句片段转换为目标数据库语句。
在步骤S110中,原始数据库语句可以是系统当前所使用的数据库对应的数据库语句,原始数据库语句用于与原始数据库进行交互,例如对原始数据库中的数据进行增加、删除、修改或查询等操作。原始数据库语句例如MySQL语句或Oracle语句等,具体可以为各数据库对应的查询语句、新增语句等。系统可以为企业的业务系统,例如web网站系统;还可以是移动端系统等。
获得原始数据库语句的方式可以为通过拦截器拦截获取,还可以通过遍历查找所有原始数据库语句。
目标数据库可以是系统需要兼容或进行切换的数据库,目标数据库的类型可以包括MySQL数据库、Oracle数据库或SqlServer数据库等,本申请实施例对此不做限定。
在步骤S120中,利用SQL解析器对原始数据库语句进行解析,其中,解析可以为词法解析或语义语法解析等,查询语句片段包括词法解析结果和语义语法解析结果。利用SQL解析器对原始数据库语句进行词法解析可以为将原始数据库语句中的字符逐个读取并加载到解析程序中,对字符进行扫描,根据构词规则识别字符并对字符进行切割,完成解析获得查询语句片段。
利用SQL解析器对原始数据库语句进行语义语法解析可以为在词法分析结果上将词条序列组合成不同语法短句,组成的语法短句将与相应的语法规则进行适配,若适配成功则生成对应的抽象语法树,即语义语法解析结果。
在步骤S130中,预设字段为根据原始数据库语句以及目标数据库的类型预先确定并进行标记的,预设字段具体可以是在将查询语句片段转换为目标数据库语句时,变化比较大的字段,例如需要将查询语句片段进行语法结构转换,以获得目标数据库语句的字段,则将该查询语句片段中的关键字作为预设字段。
对原始数据库语句进行解析的过程中,可以识别查询语句片段中是否包含预设字段,获得识别结果。识别结果表征查询语句片段中包含预设字段或查询语句片段中不包含预设字段。
在步骤S140中,获得识别结果之后,根据目标数据库的类型和识别结果,确定转换方式;根据转换方式将查询语句片段转换为目标数据库语句。其中,转换方式包括替换字符和语法转换,替换字符为将查询语句片段中的需要进行替换的字符替换为预设的字符获得目标数据库语句;语法转换为将查询语句片段进行语法格式上的转换,获得目标数据库语句。
在上述的实现过程中,通过将原始数据库语言进行解析并判断其中是否包含预设字段,根据目标数据库的类型和识别结果,即可将查询语句片段转换为目标数据库语句。提高数据库语言转换的效率,改善分别为每一数据库编写该数据库类型对应的数据库语言,造成处理效率较低的问题。
在一个可选的实施例中,解析的过程可以是通过interpretation接口对原始数据库语句进行分解,获得查询语句片段。查询语句片段可以为程序自定义的对象,例如BaseInfo对象,BaseInfo对象通过BaseInfo接口进行存储。后续数据库语言转换过程是基于BaseInfo类及延伸类进行处理。该查询语句片段对应的类中可以包括表名称、表别名、列名称、列别名、where条件、and条件、in条件、函数、join和分页等信息。数据库语言的转换过程可以看作是解析是个逆向工程,即从BaseInfo对象获得数据库语言的过程。
可选的,在本申请实施例中,识别结果包括查询语句片段中不包含预设字段;根据目标数据库的类型和识别结果,将查询语句片段转换为目标数据库语句,包括:从查询语句片段中确定待转换内容;查询语句片段包括:语句类型、所用函数、表名、字段名、关键字、查询信息和条件信息中的至少一项;根据目标数据库的类型,获得待转换内容对应的目标内容;目标内容为在预设的目标数据库的语句转换类中获得的;将查询语句片段中的待转换内容替换为目标内容,获得目标数据库语句。
在具体的实现过程中:若识别结果为查询语句片段中不包含预设字段,则从查询语句片段中确定待转换内容。查询语句片段包括:语句类型、所用函数、表名、字段名、关键字、查询信息和条件信息中的至少一项。
通过一个实施例进行描述,查询语句片段包括Select关键字、form关键字以及where关键字。其中,Select关键字为查找部分的关键字,查找部分表示需要查询的信息;form关键字为来源部分的关键字,来源部分表示所查询的信息所在的表信息;where关键字为过滤部分的关键字,过滤部分表示对于筛选该表中的数据对应的条件信息。
从每一查询语句片段中确定该部分待转换内容,接上述实施例,Select关键字对应的查找部分存在的DATE_FORMAT函数,该DATE_FORMAT函数即为查找部分的待转换内容。where关键字对应的过滤部分存在用于模糊匹配的LIKE CONCAT函数,LIKE CONCAT函数即为过滤部分的待转换内容。
可以理解的是,若查询语句片段中不存在待转换内容,则将该查询语句片段作为目标数据库语句。例如,form关键字对应的来源部分中不存在待转换内容,则无需转换,可直接将form关键字对应的来源部分作为目标数据库语句。
在确定待转换内容之后,根据目标数据库的类型,获得待转换内容对应的目标内容;目标内容为在预设的目标数据库的语句转换类中获得的。例如,目标数据库的类型为Oracle数据库,从预先编写的Oracle语句转换类中获取DATE_FORMAT函数对应的目标函数为TO_CHAR函数,以及LIKE CONCAT函数对应的目标函数为LIKE函数。之后分别将查询语句片段中的待转换内容替换为对应的目标内容,获得目标数据库语句。
在上述的实现过程中,若识别结果为查询语句片段中不包含预设字段,则将查询语句片段中的待转换内容替换为目标内容,获得目标数据库语句,实现数据库语言快速转换。并根据识别结果进行数据库语句转换,提高转换的准确率。
可选的,在本申请实施例中,识别结果包括查询语句片段中包含预设字段;根据目标数据库的类型和识别结果,将查询语句片段转换为目标数据库语句,包括:若识别到查询语句片段中包含预设字段,则根据目标数据库的类型,获得预设字段对应的语法格式;基于语法格式,对查询语句片段进行转换,获得目标数据库语句。
在具体的实现过程中:若识别结果为查询语句片段中包含预设字段,则查询语句片段需要通过语法格式的转换,获得目标数据库语句。其中,预设字段对应的语法格式是根据原始数据库类型和目标数据库类型预先确定并进行标识的。
下面通过一个实施例进行描述,以原始数据库为MySQL、目标数据库为sqlserver数据库为例:在原始数据库中,获取第一条数据的原始数据库语言为SELECT*FROM IMPORT_INFO ORDER BY createTime DESC LIMIT 1;在目标数据库中,获取第一条数据的目标数据库语言为SELECT top(1)*FROM IMPORT_INFO ORDER BY createTime DESC。
由于原始数据库语句和目标数据库语句对于查询第一条符合条件的数据在语法上具有变化,因此可以预先将原始数据库语句中的关键词LIMIT确定为预设字段,并将关键词LIMIT注册到解析器中。在对原始数据库语句进行解析时,会被识别到注册之后的关键词。并且,在确定预设字段之后,可以预先存储目标数据库中该关键词对应的语法格式,语法格式可以具体为一些关键词的位置格式等。
在识别到查询语句片段中包含关键词LIMIT,则会根据目标数据库的类型,获得预设字段对应的语法格式。接上述实施例,在sqlserver数据库中,关键词LIMIT对应的语法格式为将top(n)放至select关键字之后,以及查询字段FROM前。基于上述语法格式,对关键词LIMIT对应的查询语句片段进行转换,获得目标数据库语句。
在上述的实现过程中,在识别到查询语句片段中包含预设字段后,根据预设字段对应的语法格式,对查询语句片段进行转换,获得目标数据库语句,提高数据库语言转换的准确率。
可选的,在本申请实施例中,在判断查询语句片段中是否包含预设字段,获得识别结果之前,方法还包括:根据原始数据库的类型,确定预设字段,并对预设字段进行注册标识,以使预设字段被识别;预设字段为若将查询语句片段转换为目标数据库语句,查询语句中需要进行语句结构转换的字段。
在具体的实现过程中:根据原始数据库的类型,确定预设字段,预设字段为若将查询语句片段转换为目标数据库语句,查询语句中需要进行语句结构转换的字段。具体例如,获得原始数据库的类型和目标数据库的类型,若同一操作对应的原始数据库语句和目标数据库语句具有语法变化,则将该操作对应的原始数据库语句中的关键词,确定为预设字段。其中,操作包括对数据库中的数据进行增加、删除、修改或查询等。
对确定好的预设字段进行注册标识,注册标识过的字段会在解析的过程中被识别到。若识别到查询语句片段中包含预设字段,即表征该预设字段对应的语句难以通过字段替换的方式获得准确的目标数据库语句,而是需要进行语法格式的转换。具体例如,根据目标数据库的类型,获得目标数据库语句中,该预设字段对应的语法格式,基于语法格式,对查询语句片段进行转换,获得目标数据库语句。
在上述的实现过程中,对于原始数据库语句转换为目标数据库语句过程中需要进行语法格式转换的预设字段进行注册标识,识别到预设字段之后即可按照对应的语法格式进行语句转换,提高数据库语言转换的准确率。
可选的,在本申请实施例中,获得新增业务语句;新增业务语句为基于原始数据库的语言生成的;根据目标数据库的类型,将新增业务语句转换为目标数据库新增业务语句。
在具体的实现过程中:若企业的业务发生变动,例如需要新增业务,或者需要对业务进行调整,可以基于始数据库的语言编写对应的新增业务语句,无需逐一编写所兼容的不同数据库类型对应的数据库语言。在获取到新增业务语句后,按照上述数据库语句转换方法将新增业务语句转换为目标数据库新增业务语句,即可实现所兼容的数据库的进行对应变动。
在上述的实现过程中,通过新增业务语句转换为目标数据库新增业务语句,改善冗余的数据库语言造成数据库维护困难的问题,降低数据库维护成本。并且仅需编写新增业务语句,减少重复工作,提高工作效率。
可选的,在本申请实施例中,获得原始数据库语句,包括:通过拦截器获取用于与原始数据库进行交互的原始数据库语句;原始数据库语句包括增加语句、删除语句、修改语句和查询语句。
在具体的实现过程中:拦截器用于拦截用户请求并作出相应的处理。例如通过拦截器获取用于与原始数据库进行交互的所有原始数据库语句,其中,拦截器可以为MyBatis拦截器。
在一个可选的实施例中,在获取到原始数据库语句后,还可以通过拦截器对原始数据库语句进行语法验证,获得校验通过的原始数据库语句,通过校验成功的原始数据库语句进行后续的数据库语句转换。
对于一些转换场景,会出现转换失败或转换异常等结果,例如若原始数据库语句较为复杂,可能会出现无法解析的情况,也可能会出现解析后生成的目标数据库语言不正确的情况。然而对于这些情况,通常无法快速确定问题具体存在于原始数据库语句无法解析,还是解析后生成的目标数据库语言的过程中。因此,为了改善这种情况,可以通过拦截器对原始数据库语句进行语法验证,通过校验成功的原始数据库语句进行后续的数据库语句转换,以使在转换失败时快速定位问题。
在上述的实现过程中,通过拦截器获取用于与原始数据库进行交互的所有原始数据库语句,利用原始数据库语句进行数据库语言转换,提高数据库语言转换的效率。
可选的,在本申请实施例中,在根据目标数据库的类型和识别结果,将查询语句片段转换为目标数据库语句之后,方法还包括:根据目标数据库语句,生成目标数据库程序包;通过目标数据库程序包,将原始数据库切换为目标数据库。
在具体的实现过程中:在获取到目标数据库语句之后,将系统的代码程序包中的原始数据库对应的语法文件切换为目标数据库程序包,其中,目标数据库程序包包括目标数据库对应的语法文件。将目标代码程序包连接至目标数据库,实现将原始数据库切换为目标数据库。
请参见图3示出的本申请第二种实施例提供的一种数据库语句转换方法的流程示意图。
在一个可选的实施例中,通过拦截器获得原始数据库语句以及获得目标数据库的类型;原始数据库语句可以为MySQL语句;目标数据库的类型可以为Oracle数据库和SQLServer数据库。若目标数据库和原始数据库的类型一致,则直接对原始数据库执行数据库语言;若目标数据库和原始数据库类型不一致,即目标数据库不为MySQL,则解析原始数据库语句,获得查询语句片段。利用查询语句片段分别组装Oracle语法规则的数据库语言和SQL Server语法规则的数据库语言,实现将MySQL语句转换为Oracle数据库语言和SQLServer数据库语言。
请参见图4示出的本申请实施例提供的数据库语句转换装置的结构示意图;本申请实施例提供了一种数据库语句转换装置200,包括:
获取模块210,用于获得原始数据库语句;
解析模块220,用于对原始数据库语句进行解析,获得查询语句片段;
判断模块230,用于判断查询语句片段中是否包含预设字段,获得识别结果;
转换模块240,用于根据目标数据库的类型和识别结果,将查询语句片段转换为目标数据库语句。
可选地,在本申请实施例中,数据库语句转换装置,识别结果包括查询语句片段中不包含预设字段;转换模块240,还用于从查询语句片段中确定待转换内容;查询语句片段包括:语句类型、所用函数、表名、字段名、关键字、查询信息和条件信息中的至少一项;根据目标数据库的类型,获得待转换内容对应的目标内容;目标内容为在预设的目标数据库的语句转换类中获得的;将查询语句片段中的待转换内容替换为目标内容,获得目标数据库语句。
可选地,在本申请实施例中,数据库语句转换装置,识别结果包括查询语句片段中包含预设字段;转换模块240,还用于若识别到查询语句片段中包含预设字段,则根据目标数据库的类型,获得预设字段对应的语法格式;基于语法格式,对查询语句片段进行转换,获得目标数据库语句。
可选地,在本申请实施例中,数据库语句转换装置,还包括:标识模块,用于根据原始数据库的类型,确定预设字段,并对预设字段进行注册标识,以使预设字段被识别;预设字段为若将查询语句片段转换为目标数据库语句,查询语句中需要进行语句结构转换的字段。
可选地,在本申请实施例中,数据库语句转换装置,新增业务模块,用于获得新增业务语句;新增业务语句为基于原始数据库的语言生成的;根据目标数据库的类型,将新增业务语句转换为目标数据库新增业务语句。
可选地,在本申请实施例中,数据库语句转换装置,获取模块210,具体用于通过拦截器获取用于与原始数据库进行交互的原始数据库语句;原始数据库语句包括增加语句、删除语句、修改语句和查询语句。
可选地,在本申请实施例中,数据库语句转换装置,却换模块,用于根据目标数据库语句,生成目标数据库程序包;通过目标数据库程序包,将原始数据库切换为目标数据库。
应理解的是,该装置与上述的数据库语句转换方法实施例对应,能够执行上述方法实施例涉及的各个步骤,该装置具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。该装置包括至少一个能以软件或固件(firmware)的形式存储于存储器中或固化在装置的操作系统(operating system,OS)中的软件功能模块。
请参见图5示出的本申请实施例提供的电子设备的结构示意图。本申请实施例提供的一种电子设备300,包括:处理器310和存储器320,存储器320存储有处理器310可执行的机器可读指令,机器可读指令被处理器310执行时执行如上的方法。
本申请实施例还提供了一种存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上的方法。
其中,存储介质可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,简称EPROM),可编程只读存储器(Programmable Red-Only Memory,简称PROM),只读存储器(Read-OnlyMemory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
本申请实施例所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其他的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请实施例的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请实施例各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
以上的描述,仅为本申请实施例的可选实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。

Claims (10)

1.一种数据库语句转换方法,其特征在于,包括:
获得原始数据库语句和目标数据库的类型;
对所述原始数据库语句进行解析,获得查询语句片段;
判断所述查询语句片段中是否包含预设字段,获得识别结果;
根据所述目标数据库的类型和所述识别结果,将所述查询语句片段转换为目标数据库语句。
2.根据权利要求1所述的方法,其特征在于,所述识别结果包括所述查询语句片段中不包含所述预设字段;根据所述目标数据库的类型和所述识别结果,将所述查询语句片段转换为目标数据库语句,包括:
从所述查询语句片段中确定待转换内容;所述查询语句片段包括:语句类型、所用函数、表名、字段名、关键字、查询信息和条件信息中的至少一项;
根据所述目标数据库的类型,获得所述待转换内容对应的目标内容;所述目标内容为在预设的所述目标数据库的语句转换类中获得的;
将所述查询语句片段中的待转换内容替换为所述目标内容,获得所述目标数据库语句。
3.根据权利要求1所述的方法,其特征在于,所述识别结果包括所述查询语句片段中包含所述预设字段;根据所述目标数据库的类型和所述识别结果,将所述查询语句片段转换为目标数据库语句,包括:
若识别到所述查询语句片段中包含所述预设字段,则根据所述目标数据库的类型,获得所述预设字段对应的语法格式;
基于所述语法格式,对所述查询语句片段进行转换,获得所述目标数据库语句。
4.根据权利要求3所述的方法,其特征在于,在判断所述查询语句片段中是否包含预设字段,获得识别结果之前,所述方法还包括:
根据所述原始数据库的类型,确定所述预设字段,并对所述预设字段进行注册标识,以使所述预设字段被识别;所述预设字段为若将所述查询语句片段转换为目标数据库语句,所述查询语句中需要进行语句结构转换的字段。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获得新增业务语句;所述新增业务语句为基于所述原始数据库的语言生成的;
根据所述目标数据库的类型,将所述新增业务语句转换为目标数据库新增业务语句。
6.根据权利要求1所述的方法,其特征在于,获得原始数据库语句,包括:
通过拦截器获取用于与所述原始数据库进行交互的原始数据库语句;所述原始数据库语句包括增加语句、删除语句、修改语句和查询语句。
7.根据权利要求1-6任一所述的方法,其特征在于,在根据所述目标数据库的类型和所述识别结果,将所述查询语句片段转换为目标数据库语句之后,所述方法还包括:
根据所述目标数据库语句,生成目标数据库程序包;
通过所述目标数据库程序包,将所述原始数据库切换为所述目标数据库。
8.一种数据库语句转换装置,其特征在于,包括:
获取模块,用于获得原始数据库语句;
解析模块,用于对所述原始数据库语句进行解析,获得查询语句片段;
判断模块,用于判断所述查询语句片段中是否包含预设字段,获得识别结果;
转换模块,用于根据目标数据库的类型和所述识别结果,将所述查询语句片段转换为目标数据库语句。
9.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述机器可读指令被所述处理器执行时执行如权利要求1至7任一所述的方法。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至7任一所述的方法。
CN202310246164.1A 2023-03-14 2023-03-14 一种数据库语句转换方法、装置、电子设备及存储介质 Pending CN116226170A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310246164.1A CN116226170A (zh) 2023-03-14 2023-03-14 一种数据库语句转换方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310246164.1A CN116226170A (zh) 2023-03-14 2023-03-14 一种数据库语句转换方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN116226170A true CN116226170A (zh) 2023-06-06

Family

ID=86591022

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310246164.1A Pending CN116226170A (zh) 2023-03-14 2023-03-14 一种数据库语句转换方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116226170A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117235052A (zh) * 2023-11-15 2023-12-15 建信金融科技有限责任公司 一种数据库语句处理方法和装置
CN117331963A (zh) * 2023-11-28 2024-01-02 恒生电子股份有限公司 数据访问处理方法、装置、电子设备及存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117235052A (zh) * 2023-11-15 2023-12-15 建信金融科技有限责任公司 一种数据库语句处理方法和装置
CN117235052B (zh) * 2023-11-15 2024-03-08 建信金融科技有限责任公司 一种数据库语句处理方法和装置
CN117331963A (zh) * 2023-11-28 2024-01-02 恒生电子股份有限公司 数据访问处理方法、装置、电子设备及存储介质
CN117331963B (zh) * 2023-11-28 2024-03-08 恒生电子股份有限公司 数据访问处理方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
US10169337B2 (en) Converting data into natural language form
CN111522816A (zh) 基于数据库引擎的数据处理方法、装置、终端及介质
CN116226170A (zh) 一种数据库语句转换方法、装置、电子设备及存储介质
US9710243B2 (en) Parser that uses a reflection technique to build a program semantic tree
CN109840256B (zh) 一种基于业务实体的查询实现方法
CN109033410B (zh) 一种基于正则与字符串切割的sql解析方法
CN106407360B (zh) 一种数据的处理方法及装置
US20070265832A1 (en) Updating dictionary during application installation
WO2020206840A1 (zh) 代码翻译方法、装置、计算机设备和存储介质
CN110222028B (zh) 一种数据管理方法、装置、设备及存储介质
CN112579466A (zh) 测试用例的生成方法、装置及计算机可读存储介质
WO2020206838A1 (zh) 代码片段翻译方法、装置、计算机设备和存储介质
US20170154029A1 (en) System, method, and apparatus to normalize grammar of textual data
US8041556B2 (en) Chinese to english translation tool
CN113778852A (zh) 一种基于正则表达式的代码分析方法
US11947530B2 (en) Methods and systems to automatically generate search queries from software documents to validate software component search engines
Pirapuraj et al. Analyzing source code identifiers for code reuse using NLP techniques and WordNet
US20220269706A1 (en) Methods and systems to parse a software component search query to enable multi entity search
CN116010461A (zh) 数据血缘关系解析方法及装置、存储介质及电子设备
CN113821496B (zh) 数据库迁移方法、系统、设备及计算机可读存储介质
CN113868375A (zh) 基于结构化查询语言的数据查询方法、装置、设备及存储介质
CN113672512A (zh) 代码检查规则生成方法、代码检查方法、装置、介质
CN108008947B (zh) 一种编程语句的智能提示方法、装置、服务器及存储介质
CN117331963B (zh) 数据访问处理方法、装置、电子设备及存储介质
CN116821186A (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