[发明专利]一种语句自动转换方法和装置有效
申请号: | 201811633920.1 | 申请日: | 2018-12-29 |
公开(公告)号: | CN111382170B | 公开(公告)日: | 2023-07-14 |
发明(设计)人: | 张凤桥;高建军;康宁 | 申请(专利权)人: | 北京亿阳信通科技有限公司 |
主分类号: | G06F16/242 | 分类号: | G06F16/242 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100093 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 语句 自动 转换 方法 装置 | ||
一种语句自动转换方法,将原始SQL语句切分为语句序列,包括:预处理步骤,顺序解析并获取所述INSERT语句和所述UPDATE语句的语义数值,将解析的结果分别存储于预设存储结构中;获取简单型UPDATE语句的操作目标、条件和赋值信息,将所述UPDATE语句的条件和赋值信息填入与所述UPDATE语句具有相同操作目标的所述INSERT语句的合并存储位置;转换步骤,对经过所述预处理步骤的所述语句序列依次进行转换并输出;直接输出CREATE语句和合并存储位置中内容为空的INSERT语句;更新输出合并存储位置中的INSERT语句;输出经过转换后的复杂型UPDATE语句。本发明还公开一种语句自动转换装置。通过本发明实现UPDATE语句自动转换为INSERT语句。
技术领域
本发明涉及软件行业,更具体的说,涉及一种语句转换技术。
背景技术
随着网络规模的不断扩大,数据增长迅速,传统的基于关系数据库的数据处理手段已经越来越力不从心。而最经济和平滑的向大数据技术过度的手段,就是能直接复用原来的数据处理过程中写好的一系列SQL语句,这样可以保证对原来的业务逻辑保持不变,只是改变了底层的执行引擎。
在移植过程中最大的问题就是,目前面向大数据处理的数据库或计算框架(如Greenplum和Spark)都是面向分析型的,对于原来的处理逻辑过程中的更新操作支持非常弱或不支持,这就需要提供一个自动化的转换工具,自动把原来大批量SQL语句序列中的update语句,自动转换为等价的非update语句。
在新旧SQL的移植方面,涉及传统关系数据库之间的SQL移植和关系数据库 SQL向大数据SQL移植两个方面,而前者与本专利的场景无关,下面我只讨论后者。即原有面向关系数据库的SQL序列移植为适合运行在大数据的数据库或大数据计算框架下运行的SQL序列。
一般情况下会采取两种方法进行SQL序列的转换。
a)将原有SQL直接用于大数据跨框架。
b)按照大数据的特点和要求手工移植原有SQL序列。
对于上述方案a),由于目前面向大数据处理的数据库或计算框架(如 GreenPlum和Spark)都是面向分析型的,对于原来的处理逻辑过程中的更新操作支持非常弱或不支持,如果现有SQL序列中存在update语句,则会导致效率非常低或直接不支持。
上述方案b)为手工移植方案,存在移植工作量大(一个SQL都有几百个字段),并且容易导致逻辑错误,在新旧系统的数据核查比对方面的工作量是非常巨大的。
因此,一种简便的自动实现语句转换的技术亟待出现。
发明内容
本发明根据UPDATE语句和INSERT语句的结构和语义,对不同类型的 UPDATE语句采用了不同的转换方法,达到最优转换的目的。本发明提供了如下技术方案一种语句自动转换的方法,包括:将原始SQL语句切分为语句序列,在所述语句序列中获取与所述原始语句操作目标相应的INSERT语句、UPDATE 语句、CREATE语句,然后进入预处理步骤:
顺序解析并获取所述INSERT语句和所述UPDATE语句的语义数值,按照类型、操作目标将解析的结果分别存储于预设存储结构中;
获取简单型UPDATE语句的操作目标、条件和赋值信息,在所述预设存储结构中,将所述UPDATE语句的条件和赋值信息填入与所述UPDATE语句具有相同操作目标的所述INSERT语句的合并存储位置;
转换步骤:
对经过所述预处理步骤的所述语句序列依次进行转换并输出;
直接输出CREATE语句和合并存储位置中内容为空的INSERT语句;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京亿阳信通科技有限公司,未经北京亿阳信通科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811633920.1/2.html,转载请声明来源钻瓜专利网。