[发明专利]一种SQL代码转换方法及装置有效
申请号: | 201610099219.0 | 申请日: | 2016-02-23 |
公开(公告)号: | CN107103007B | 公开(公告)日: | 2020-09-15 |
发明(设计)人: | 蔡聪;李剑平 | 申请(专利权)人: | 菜鸟智能物流控股有限公司 |
主分类号: | G06F16/2453 | 分类号: | G06F16/2453 |
代理公司: | 北京博思佳知识产权代理有限公司 11415 | 代理人: | 林祥 |
地址: | 开曼群岛大开曼岛*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 sql 代码 转换 方法 装置 | ||
本申请公开了一种SQL代码转换方法及装置。一种SQL代码转换方法,其特征在于,该方法包括:对待转换的SQL原代码段进行解析,在原代码段中存在join操作关键字的情况下,判断待替换表是join操作的直接操作对象还是间接操作对象;根据判断结果,对待替换表名及待替换字段名进行文本替换。本申请方案有效地提升SQL代码转换的处理效率。
技术领域
本申请涉及数据库技术领域,尤其涉及一种SQL代码转换方法及装置。
背景技术
结构化查询语言SQL(Structured Query Language)是一种数据库操作语言,由于其具有语法简单、非过程化、使用方式灵活等特点,因此被广泛应用于各类涉及数据库操作的应用程序开发中。此外,应用于分布式文件系统中的数据处理语言,例如Hive SQL、ODPSSQL等,也都采用了与SQL类似的语法。
出于业务发展的需要,有时可能需要对底层数据库的数据结构进行修改,这就有可能涉及到数据表名称、字段名称的变化。为了保证SQL代码的可用性,需要将原有的SQL代码中涉及的表名、字段名修改为新的表名和字段名。如果实现应用程序中使用的SQL代码比较简单,并且数据结构的变化情况比较简单,可以直接用文本替换的方式对SQL代码进行转换。
然而在实际应用中,应用程序中SQL代码往往比较复杂(例如涉及多表关联查询、多层嵌套查询等),数据结构的变化也并不限于简单的数据表、字段名称变化,而是涉及更为复杂的转换映射关系。这种情况下,直接使用文本替换的方式对SQL代码进行转换可能会导致错误,因此只能使用人工的方式对涉及表名、字段名变化的SQL代码进行手动修改,导致处理效率低下。
发明内容
针对上述技术问题,本申请提供一种SQL代码转换方法及装置,技术方案如下:
根据本申请的第一方面,提供一种SQL代码转换方法,该方法包括:
对待转换的SQL原代码段进行解析,确定原代码段的语法结构以及原代码段中使用到的表名、表中字段名;
根据预设的转换需求信息,确定所述原代码段中的待替换表名及待替换字段名,所述待替换字段为待替换表中的字段;所述转换需求信息中包括:需要替换的表名文本的替换前后对应关系、以及需要替换的字段名文本的替换前后对应关系;
在所述原代码段中存在join操作关键字的情况下,判断待替换表是join操作的直接操作对象还是间接操作对象;
根据判断结果,对待替换表名及待替换字段名进行文本替换。
根据本申请的第二方面,提供一种SQL代码转换装置,该装置包括:
解析模块,用于对待转换的SQL原代码段进行解析,确定原代码段的语法结构以及原代码段中使用到的表名、表中字段名;
待替换文本确定模块,用于根据预设的转换需求信息,确定所述原代码段中的待替换表名及待替换字段名,所述待替换字段为待替换表中的字段;所述转换需求信息中包括:需要替换的表名文本的替换前后对应关系、以及需要替换的字段名文本的替换前后对应关系;
判断模块,用于在所述原代码段中存在join操作关键字的情况下,判断待替换表是join操作的直接操作对象还是间接操作对象;
替换模块,用于根据判断结果对待替换表名及待替换字段名进行文本替换。
本申请实施例所提供的技术方案,在对表名、字段名进行文本替换操作的基础上,进一步增加了对多表关联查询、多层嵌套查询的特殊转换处理,从而令复杂的SQL代码也能够正确地进行自动转换处理,有效地提升SQL代码转换的处理效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于菜鸟智能物流控股有限公司,未经菜鸟智能物流控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610099219.0/2.html,转载请声明来源钻瓜专利网。