CN105868204B - 一种转换Oracle脚本语言SQL的方法及装置 - Google Patents
一种转换Oracle脚本语言SQL的方法及装置 Download PDFInfo
- Publication number
- CN105868204B CN105868204B CN201510030011.9A CN201510030011A CN105868204B CN 105868204 B CN105868204 B CN 105868204B CN 201510030011 A CN201510030011 A CN 201510030011A CN 105868204 B CN105868204 B CN 105868204B
- Authority
- CN
- China
- Prior art keywords
- sentence
- database system
- target database
- data object
- 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.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种转换Oracle脚本语言SQL的方法及装置,该方法包括:根据用户输入的转换请求,获取Oracle的待转换的SQL脚本文件;解析待转换的SQL脚本文件,并生成解析结果;根据解析结果以及预先得到的Oracle的脚本语言SQL和目标数据库系统的脚本语言的映射关系,生成目标数据库系统的脚本语句的子句,目标数据库系统为Hive或Hbase;将目标数据库系统的脚本语句的子句转换为可执行的目标数据库系统的脚本文件,本发明的转换Oracle脚本语言SQL的方法能方便、快速地将Oracle的SQL脚本文件转换为其它数据库系统的脚本文件。
Description
技术领域
本发明涉及数据库领域,特别涉及一种转换Oracle脚本语言SQL的方法及装置。
背景技术
在传统的信息技术(IT,Information Technology)业界,大型应用系统多使用专业的关系型数据库产品构建其数据库系统,其中,Oracle数据库所占据的市场份额是最大的,Oracle是以高级结构化查询语言(SQL,Structured Query Language)为基础的大型关系数据库,通俗地讲它是用方便逻辑管理的语言操纵大量有规律数据的集合,是目前最流行的客户/服务器体系结构的数据库之一。
在一定的数据规模下,Oracle为系统的数据存储、访问和管理提供了较好的支持,但在信息化日益加深的今天,系统所需要承载和处理的数据规模呈几何级数激增,目前已经进入了所谓的“大数据”时代,大型企业级系统面临“数据瓶颈”,面对这些问题,以Oracle为代表的大型关系数据库的局限性日益明显,其升级和维护成本大幅提高。
基于上述情况,云计算和大数据技术及产品应时而生,并被越来越多不同规模、不同行业的企业所接受,作为在海量数据环境下Oracle数据库的替代方案,其中,Hadoop项目集是目前最备受业界青睐的开源云计算和大数据解决方案,Hadoop是一个分布式系统基础架构,Hive是建立在Hadoop上的数据仓库基础构架,可以存储、查询和分析存储在Hadoop中的大规模数据,另外,HBase是一个分布式的、面向列的开源数据库,利用HBase技术可在廉价计算机服务器上搭建起大规模结构化存储集群。
在目前的IT业界,将大型关系数据库(例如Oracle)和HBase、Hive等非传统数据系统混用已不鲜见,随着各行业大数据化程度的日益加深,这种解决方案将成为一种主流趋势。
使用上述混合数据存储和处理解决方案,可以根据系统各部分不同的功能需求使用不同的数据处理方式,达到扬长避短的效果,但同时也带来了一些问题,因为架构和实现方式的不同,Oracle、HBase和Hive都有自己的脚本语言支持应用系统的数据访问和管理需求。Oracle使用SQL,HBase使用自定义的Shell进行建表、查询、更新数据等操作,而Hive则使用类SQL语言HiveQL实现数据操作,这种差异性带来的问题主要有:第一,应用程序需要针对Oracle、HBase和Hive编写不同的数据访问代码,增加了数据整合的困难度,另外,程序变更时也需要根据不同的底层数据访问方式进行修改,提高了维护的难度;第二,历史遗留系统升级困难,例如很多企业在考虑将IT资产向大数据平台移植时遇到的一个大问题就是遗留系统的改造,而其核心就是数据访问层代码的修改。大型企业级IT系统的代码量常常是百万级的,这意味着对系统的任何变更都可能涉及到大量的修改,而数据访问层的升级涉及的主要是传统关系数据库(例如Oracle)SQL的改写,如果完全由程序员手工改写将需要极大的工作量。
发明内容
本发明实施例的目的在于提供一种转换Oracle脚本语言SQL的方法及装置,能方便、快速地将Oracle的SQL脚本文件转换为其它数据库系统的脚本文件。
为了达到上述目的,本发明的实施例提供了一种转换Oracle脚本语言SQL的方法,该方法包括:
根据用户输入的转换请求,获取Oracle的待转换的SQL脚本文件;
解析待转换的SQL脚本文件,并生成解析结果;
根据解析结果以及预先得到的Oracle的脚本语言SQL和目标数据库系统的脚本语言的映射关系,生成目标数据库系统的脚本语句的子句,目标数据库系统为Hive或Hbase;
将目标数据库系统的脚本语句的子句转换为可执行的目标数据库系统的脚本文件。
其中,目标数据库系统为HBase,SQL语句为DDL语句,生成目标数据库系统的脚本语句的子句的步骤包括:
根据DDL语句中的数据对象操作符的类型,判断HBase在执行对应的操作处理前,是否需要执行一预先操作,并在需要执行一预先操作时,针对DDL语句中的数据对象,生成该预先操作对应的一HBase Shell语句的子句;
针对DDL语句,保持DDL语句中的数据对象标识不变,将DDL语句中的数据对象操作符转换为HBase中对应的操作符,得到HBase Shell语句的子句。
其中,目标数据库系统为HBase,SQL语句为DML语句,生成目标数据库系统的脚本语句的子句的步骤包括:
根据DML语句的数据对象操作符,确定HBase对应的数据对象操作符;
根据所确定的HBase对应的数据对象操作符,保持DML语句中的数据对象标识不变,生成用于对DML语句中的数据进行操作的HBase Shell语句的子句。
其中,目标数据库系统为Hive,SQL语句为DDL语句,生成目标数据库系统的脚本语句的子句的步骤包括:
根据DDL语句的数据对象操作符,确定Hive对应的数据对象操作符;
将DDL语句中的数据对象标识转换成HiveQL语句中对应的数据对象标识;
根据所确定的Hive对应的数据对象操作符和转换后的数据对象标识,生成用于对DDL语句中的数据进行操作的HiveQL语句的子句。
其中,目标数据库系统为Hive,SQL语句为DML语句,生成目标数据库系统的脚本语句的子句的步骤包括:
根据DML语句的数据对象操作符,确定Hive对应的数据对象操作符;
将DML语句中的数据对象标识转换成HiveQL语句中对应的数据对象标识;
根据所确定的Hive对应的数据对象操作符和转换后的数据对象标识,生成用于对DML语句中的数据进行操作的HiveQL语句的子句。
其中,根据用户输入的转换请求,获取Oracle的待转换的SQL脚本文件的步骤之前,方法还包括:
接收用户输入的转换请求;
验证该请求是否合法;
若合法,则执行根据用户输入的转换请求,获取Oracle的待转换的SQL脚本文件的步骤;否则,结束流程。
其中,将目标数据库系统的脚本语句的子句转换为可执行的目标数据库系统的脚本文件的步骤之后,方法还包括:
将目标数据库系统的脚本文件展示给用户。
其中,解析待转换的SQL脚本文件,并生成解析结果的步骤包括:
判断待转换的SQL脚本文件是否可以转换为目标数据库系统的脚本文件;
若可以,则根据目标数据库系统的类型,调用对应的SQL引擎解析待转换的SQL脚本文件;否则,结束流程。
其中,将目标数据库系统的脚本语句的子句转换为可执行的目标数据库系统的脚本文件的步骤包括:
根据目标数据库系统的脚本语句的结构,将目标数据库系统的脚本语句的子句进行重新组织;
将重组后的子句进行合并,得到可执行的目标数据库系统的脚本文件。
本发明的实施例还提供了一种转换Oracle脚本语言SQL的装置,该装置包括:
获取模块,用于根据用户输入的转换请求,获取Oracle的待转换的SQL脚本文件;
解析模块,用于解析待转换的SQL脚本文件,并生成解析结果;
生成模块,用于根据解析结果以及预先得到的Oracle的脚本语言SQL和目标数据库系统的脚本语言的映射关系,生成目标数据库系统的脚本语句的子句,目标数据库系统为Hive或Hbase;
转换模块,用于将目标数据库系统的脚本语句的子句转换为可执行的目标数据库系统的脚本文件。
其中,目标数据库系统为HBase,SQL语句为DDL语句,生成模块包括:
第一单元,用于根据DDL语句中的数据对象操作符的类型,判断HBase在执行对应的操作处理前,是否需要执行一预先操作,并在需要执行一预先操作时,针对DDL语句中的数据对象,生成该预先操作对应的一HBase Shell语句的子句;
第二单元,用于针对DDL语句,保持DDL语句中的数据对象标识不变,将DDL语句中的数据对象操作符转换为HBase中对应的操作符,得到HBase Shell语句的子句。
其中,目标数据库系统为HBase,SQL语句为DML语句,生成模块包括:
第三单元,用于根据DML语句的数据对象操作符,确定HBase对应的数据对象操作符;
第四单元,用于根据所确定的HBase对应的数据对象操作符,保持DML语句中的数据对象标识不变,生成用于对DML语句中的数据进行操作的HBase Shell语句的子句。
其中,目标数据库系统为Hive,SQL语句为DDL语句,生成模块包括:
第五单元,用于根据DDL语句的数据对象操作符,确定Hive对应的数据对象操作符;
第六单元,用于将DDL语句中的数据对象标识转换成HiveQL语句中对应的数据对象标识;
第七单元,用于根据所确定的Hive对应的数据对象操作符和转换后的数据对象标识,生成用于对DDL语句中的数据进行操作的HiveQL语句的子句。
其中,目标数据库系统为Hive,SQL语句为DML语句,生成模块包括:
第八单元,用于根据DML语句的数据对象操作符,确定Hive对应的数据对象操作符;
第九单元,用于将DML语句中的数据对象标识转换成HiveQL语句中对应的数据对象标识;
第十单元,用于根据所确定的Hive对应的数据对象操作符和转换后的数据对象标识,生成用于对DML语句中的数据进行操作的HiveQL语句的子句。
其中,装置还包括:
接收模块,用于接收用户输入的转换请求;
验证模块,用于验证该请求是否合法,并在验证该请求合法时,触发获取模块根据用户输入的转换请求,获取Oracle的待转换的SQL脚本文件。
其中,装置还包括:
展示模块,用于将目标数据库系统的脚本文件展示给用户。
其中,解析模块包括:
判断单元,用于判断待转换的SQL脚本文件是否可以转换为目标数据库系统的脚本文件,并在待转换的SQL脚本文件可以转换为目标数据库系统的脚本文件时,触发调用单元;
调用单元,用于根据判断单元的触发,根据目标数据库系统的类型,调用对应的SQL引擎解析待转换的SQL脚本文件。
其中,转换模块包括:
重组单元,用于根据目标数据库系统的脚本语句的结构,将目标数据库系统的脚本语句的子句进行重新组织;
合并单元,用于将重组后的子句进行合并,得到可执行的目标数据库系统的脚本文件。
本发明的上述方案至少包括以下有益效果:
在本发明的实施例的转换Oracle脚本语言SQL的方法中,根据用户输入的转换请求,解析待转换的SQL脚本文件,并根据解析结果以及SQL和目标数据库系统的脚本语言的映射关系,得到目标数据库系统的脚本语句的子句,再将脚本语句的子句转换为可执行的目标数据库系统的脚本文件。从而快速地将Oracle的SQL脚本文件转换为其它数据库系统的脚本文件。
附图说明
图1为本发明实施例中转换Oracle脚本语言SQL的方法的步骤流程图;
图2为本发明实施例中INSERT语句的语法树;
图3为本发明实施例中Oracle SQL的INSERT语句生成对应的HBase Shell子句和HiveQL子句的流程图;
图4为本发明实施例中转换Oracle脚本语言SQL的装置的结构示意图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
本发明针对现有技术中将Oracle的SQL脚本文件转换为其它数据库系统的脚本文件较繁琐的问题,提供了一种转换Oracle脚本语言SQL的方法及装置,能方便、快速地将Oracle的SQL脚本文件转换为其它数据库系统的脚本文件。
如图1所示,本发明的实施例提供了一种转换Oracle脚本语言SQL的方法,该方法包括:
步骤11,根据用户输入的转换请求,获取Oracle的待转换的SQL脚本文件。
在本发明的具体实施例中,用户输入的转换请求中携带待转换的SQL脚本文件的路径,其中,待转换的SQL脚本文件可以是一个或多个。此外,还必须获得数据库的操作授权,通常是指对应的数据库用户名和密码,且授权权限需大于或等于待转换脚本文件执行用户的数据库权限,以便于后续操作。
其中,在本发明的上述实施例中,在执行步骤11之前,上述方法还包括:接收用户输入的转换请求;验证该请求是否合法;若合法,则执行根据用户输入的转换请求,获取Oracle的待转换的SQL脚本文件的步骤;否则,结束流程。
在本发明的具体实施例中,主要是验证根据用户输入的转换请求得到的待转换的SQL脚本文件是否为标准的SQL脚本文件。若是标准的SQL脚本文件便继续执行步骤11,否则,结束流程。
步骤12,解析待转换的SQL脚本文件,并生成解析结果。
步骤13,根据解析结果以及预先得到的Oracle的脚本语言SQL和目标数据库系统的脚本语言的映射关系,生成目标数据库系统的脚本语句的子句,目标数据库系统为Hive或Hbase。
在本发明的具体实施例中,在完成解析后,需要对解析结果进行分析,同时还需要获取目标数据库系统的脚本语句的元数据(例如关键字、语法模板、数据类型等)以便得到SQL和目标数据库系统的脚本语言的映射关系。此外,还需要获取SQL语句中涉及的数据对象的数据字典信息。
步骤14,将目标数据库系统的脚本语句的子句转换为可执行的目标数据库系统的脚本文件。
在本发明的上述实施例中,步骤12的具体步骤为:判断待转换的SQL脚本文件是否可以转换为目标数据库系统的脚本文件;若可以,则根据目标数据库系统的类型,调用对应的SQL引擎解析待转换的SQL脚本文件;否则,结束流程。
在本发明的具体实施例中,目标数据库系统不同,用于解析SQL脚本文件的SQL引擎也不同。因此需要根据目标数据库系统的类型,调用对应的SQL引擎来解析待转换的SQL脚本文件。
在本发明的具体实施例中,SQL脚本文件中的一些操作语句有可能在Hive或Hbase中不存在执行这些操作的语句。当出现这样的情况时,对应的SQL引擎就会发出“目标数据库系统不支持该语句操作”的信息,并结束流程。
在本发明的具体实施例中,SQL引擎是基于开源的语言识别工具(ANTLR,AnotherTool for Language Recognition)工具完成的。ANTLR包括词法分析器(Lexer,Lexicalanalyzer)和语法分析器(Parser)而且还可以通过扩展语法分析SQL引擎,使其支持新的目标数据库类型,即,扩展词法与语法规则,支持新的语句类型。下面以SQL语句中常见的INSERT语句为例,阐述SQL引擎解析的过程。传统的语言解析方法,是首先按照规则,将文本中的字符串划分为一个个令牌(Token),Token主要有两种属性,即,Token名称和Token值,对整个文件的不断处理会连续的输出Token流,整个过程称之为词法分析。总而言之,词法分析就是定义Token类型和划分规则,并执行分析获得Token流的过程。语法分析是根据定义的语法规则,获得输入的Token流,进行语法树构建,最终识别语句的过程。而本发明的实施例的具体流程为:
第一,词法分析:假设要向数据表tab1中插入一行数据(1,’a’),存在如下两种合法的INSERT语句。INSERT INTO tab1 VALUES(1,’a’);INSERT INTO tab1(col1,col2)VALUES(1,’a’);在这两个INSERT语句中,存在如下规律:INSERT语句必须以INSERT INTO关键字开始;接下来必须跟上待插入数据的表名,此处假设表名只能是字母、数字、下划线的组合,且必须以字母开头;表名后可以包含列名,也可以不包含列名,不包含列名表示所有列,包含列名则必须以左括号开始,右括号结束,列名以逗号分隔,此处同样假设列名只能是字母、数字、下划线的组合,且必须以字母开头;之后是VALUES子句;VALUES子句后,是具体的待插入值,以左括号开始,右括号结束,多个值以逗号分隔,如果值为字符串,以引号开始,引号结束。
根据如上分析结果,可以得到如表1所示的INSERT语句的Token类型。
表1
ANTLR使用基于正则表达式的词法匹配规则,针对如上INSERT语句,定义的ANTLR词法文件如下:
根据上述词法文件,对上述第一条INSERT语句的词法分析结果如表2所示。
语句 | INSERT | INTO | tab1 | VALUES | ( | 1 | , | 'a' | ) | ; |
Token | INSERT | INTO | NAME | VALUES | ( | NUMBER | , | STRING | ) | ; |
表2
第二,语法分析:不同的语言有不同的语法,SQL语言也是如此。就SQL语言来说,虽然存在SQL国际标准,但是不同的数据库厂商对自身的数据库产品往往进行了一些增强和扩展,所以对不同的数据库类型,语法也具有一些差异。进行语法分析前,首先要确定语言的语法规则,然后才能根据规则分析输入语句。在ANTLR中,对语法规则的定义是通过词法分析输出的Token来完成的。Token是语法规则的基本元素,在语法分析的范畴内,Token被称为终结符,通过终结符建立最终的有语义的语句。同样以上述INSERT语句为例,说明语法解析的方法和过程。首先,根据SQL语句格式定义如下INSERT语法规则:
根据上述语法规则,对语句“INSERT INTO tab1(col1,col2)VALUES(1,'a');”的语法进行解析能得到如图2所示语法树,该语法树展示了标准INSERT语句语法解析的最终语法树,方框内的叶子节点为终结符,终结符均是词法分析的输出,树上的椭圆形节点均为非终结符,树的结构则展示了语句的语法规则。可以理解的是,不仅是INSERT语句,其他的任何SQL语句都可以通过定义语法规则来完成语义解析。
在本发明的具体实施例中,在完成SQL语句解析后,需要根据解析结果以及预先得到的Oracle的脚本语言SQL和目标数据库系统的脚本语言的映射关系,生成目标数据库系统的脚本语句的子句,其中,SQL和目标数据库系统(Hive或Hbase)的脚本语言的映射关系会在后文阐述,此处主要描述子句生成的过程,同样以上述INSERT语句为例,根据SQL和目标数据库系统(Hive或Hbase)的脚本语言的映射关系,通过INSERT语句生成子句的流程图如图3所示,根据处理流程图和语法解析的结果,对上述INSERT语句向HBase的转换分析过程如表3所示。
表3
图3中Token名和Token值两列标识输入的Token类型和值,该生成子句的过程展示了分析的逻辑处理,目标脚本转换逻辑输出列显示了逆向分析的结果。可以理解的是,在本发明的实施例中不光是INSERT语句,其他SQL语句同样适合类似的分析方法和系统。
其中,在本发明的上述实施例中,在执行完步骤14后,上述方法还包括:将目标数据库系统的脚本文件展示给用户。
在本发明的具体实施例中,会向用户展示转换的过程和最后生成的目标数据库系统的脚本文件。当然如果没有转换成功的话,会将原始的待转换的SQL脚本文件回退并展示给用户。
其中,在本发明的上述实施例中,步骤14的具体步骤为:根据目标数据库系统的脚本语句的结构,将目标数据库系统的脚本语句的子句进行重新组织;将重组后的子句进行合并,得到可执行的目标数据库系统的脚本文件。
在本发明的具体实施例中,根据SQL引擎解析得到的解析结果、SQL和目标数据库系统的脚本语言的映射关系得到的逻辑语句通常为目标数据库系统的脚本语句的子句的序列,因此还需要进一步转换,生成可执行的回退语句。具体地,第一步,由于这些子句是按照源SQL语句的结构分析输出的,而目标数据库系统的脚本语句的结构通常与源SQL语句不同,因此需要对逻辑子句进行重新组织。第二步,数据库Oracle的脚本语言SQL语句在不同的目标数据库系统里有不同的实现,因此需要将具有不同实现的语句映射为目标系统的语句。第三步,将经过重新组织、映射后的目标脚本语句,合并为可执行的脚本文件。但是,这三个步骤中的某些过程可能是可选的,在实际处理过程中,会根据语句的特征进行特定的处理。还以上述INSERT语句为例说明,具体的生成过程如表4所示。
表4
其中,在本发明的上述实施例中,当目标数据库系统为HBase,SQL语句为DDL语句时,生成目标数据库系统的脚本语句的子句的步骤包括:根据DDL语句中的数据对象操作符的类型,判断HBase在执行对应的操作处理前,是否需要执行一预先操作,并在需要执行一预先操作时,针对DDL语句中的数据对象,生成该预先操作对应的一HBase Shell语句的子句;针对DDL语句,保持DDL语句中的数据对象标识不变,将DDL语句中的数据对象操作符转换为HBase中对应的操作符,得到HBase Shell语句的子句。
在本发明的具体实施例中,以一些具体的DDL语句为例说明,第一,建表:Oracle建表语句为:
CREATE TABLE tab1(col1 INTEGER,col2 VARCHAR2(20));
与之对应的HBase Shell的语句为:
create‘tab1’,’col1’,’col2’
通过分析可知:因为HBase的数据类型是单一的,只有字符串类型,所以建表的转换不涉及数据类型的映射,只需要将操作符进行转换,而像表名、列(族)名这样的对象标识基本不用变化。第二,删表:Oracle删表语句为:
DROP TABLE tab1;
与之对应的HBase Shell语句为:
disable‘tab1’
drop‘tab1’
通过分析可知:在HBase中删除一个表之前,需要先将该表失效。在该语句中,预先操作是将表失效的操作。第三,添加列(族):Oracle添加列的语句如下:
ALTER TABLE tab1 ADD col3 INTEGER;
与之对应的HBase Shell的语句为:
disable‘tab1’
alter‘tab1’,{NAME=>‘col3’}
enable tab1’
通过分析可知:在HBase中为一个表添加列族之前,需要先将该表失效,在添加完成后,需要将该表重新生效。在该语句中,预先操作是将表失效的操作。第四,删除列(族):Oracle删除列的语句如下:
ALTER TABLE tab1 DROP col3;
与之对应的HBase Shell的语句为:
disable‘tab1’
alter'tab1',NAME=>'col3',METHOD=>'delete'
enable tab1’
通过分析可知:在HBase中从一个表中删除列族前后,同样需要对该表进行生失效操作,在该语句中预先操作为失效操作。
其中,在本发明的上述实施例中,当目标数据库系统为HBase,SQL语句为DML语句时,生成目标数据库系统的脚本语句的子句的步骤包括:根据DML语句的数据对象操作符,确定HBase对应的数据对象操作符;根据所确定的HBase对应的数据对象操作符,保持DML语句中的数据对象标识不变,生成用于对DML语句中的数据进行操作的HBase Shell语句的子句。
在本发明的具体实施例中,HBase可支持查询,对单条记录的插入以及单条记录删除和全表删除。以一些具体的DML语句为例说明,第一,查询:常见的Oracle查询语句为:
SELECT col1,col2 FROM tab1;
SELECT COUNT(*)FROM tab1;
SELECT col1,col2 FROM tab1 WHERE rowkey=’row1’;
SELECT col1,col2 FROM tab1 WHERE col1<3;
而HBase不直接支持第四种查询方式,前三种查询方式对应的HBase Shell语句为:
scan‘tab1’
count‘tab1’
get'tab1','row1'
通过分析可知:HBase中全表查询的语句可以直接从Oracle SQL转换得到,基于Row Key的查询需要在Oracle表中有与Row Key对应的列,而按照特定查询条件,需要比较复杂的机制,超出单纯Shell语言的范畴,本发明的实施例不涉及。第二,插入数据:Oracle向表插入数据的常用语句如下:
INSERT INTO tab1 VALUES(1,’a’);
INSERT INTO tab1 SELECT col1,col2 FROM tab2;
HBase Shell中目前只对单条记录插入,其语句为:
put'tab1','row1','col1:','1','col2:','a'
通过分析可知:在HBase中对单条记录的插入语句和Oracle相似,但没有语句直接支持通过子查询批量插入,实际应用中可将Hive和HBase整合实现此类功能。第三,删除数据:Oracle从表中删除数据的常用语句如下:
DELETE FROM tab1;
DELETE FROM tab1 where rowkey=‘row1’;
与之对应的HBase Shell语句为:
truncate‘tab1’
deleteall‘tab1’,’row1’
通过分析可知:在HBase中对单行记录的删除也是根据Row key的删除,尚不直接支持根据特定字段的删除,而全表的删除基本上和Oracle大同小异。第四,更新数据:Oracle更新表中记录的语句为:
UPDATE tab1 SET col1=2WHERE rowkey=‘row1’;
对应的HBase Shell的语句为:
put‘tab1’,‘row1’,‘col1:’,‘2’
通过分析可知:在HBase Shell中并没有专门的数据更新命令,数据更新是直接通过put重写。
其中,在本发明的上述实施例中,当目标数据库系统为Hive,SQL语句为DDL语句时,生成目标数据库系统的脚本语句的子句的步骤包括:根据DDL语句的数据对象操作符,确定Hive对应的数据对象操作符;将DDL语句中的数据对象标识转换成HiveQL语句中对应的数据对象标识;根据所确定的Hive对应的数据对象操作符和转换后的数据对象标识,生成用于对DDL语句中的数据进行操作的HiveQL语句的子句。
在本发明的具体实施例中,由于Hive中表的数据有不同的类型,因此在根据生成HiveQL语句的子句时,需要考虑数据类型的映射,Hive的基本数据类型如表5所示,Oracle的主要数据类型如表6所示,而在本发明的实施例中设定Oracle常用的数据类型与Hive数据类型的映射关系如表7所示。
表5
表6
Oracle | Hive |
char | char |
VARchar2 | STRING |
Nchar | STRING |
NVARchar2 | STRING |
DATE | DATE |
INTEGER | INT |
FLOAT | FLOAT |
REAL | DOUBLE |
DECIMAL(P,S) | DECIMAL |
NUMBER(P,S) | DECIMAL |
表7
在本发明的具体实施例中,以一些具体的DDL语句为例说明,第一,建表:Oracle建表语句为:
CREATE TABLE tab1(col1 INTEGER,col2 VARCHAR2(20));
与之对应的HiveQL的语句为:
CREATE TABLE tab1(col1 INT,col2 STRING);
通过分析可知:HiveQL的基本建表语句和Oracle SQL的建表语句除了类型略有不同没有什么不同。第二,删表:Oracle删表语句为:
DROP TABLE tab1;
与之对应的HiveQL的语句为:
DROP TABLE tab1;
通过分析可知:在删除表时,Oracle SQL和HiveQL使用的是相同的语句。需要注意的是,Hive中的表有内部表和外部表之分,内部表删除时,表的元数据和数据会被一起删除,外部表删除时,只删除元数据。第三,添加列:Oracle添加列的语句为:
ALTER TABLE tab1 ADD(col3 INTEGER,col4 FLOAT;
与之对应的HiveQL的语句为:
ALTER TABLE tab1 ADD COLUMNS(col3 INT,col4 FLOAT);
通过分析可知:用HiveQL为表添加一个或多个字段时,其基本语法与Oracle SQL一致,只是在关键字上有所区别。第四,删除列:Oracle删除列的语句为:
ALTER TABLE tab1 DROP col3;
与之对应的HiveQL的语句为:
ALTER TABLE tab1 REPLACE COLUMNS(col1 INTEGER,col2 VARCHAR2(20));
通过分析可知:HiveQL中删除列的方式是将原来所有的列的删除,代之以新的列,在根据解析结果生成HiveQL语句的子句时,需要从数据字典取得表的信息。
其中,在本发明的上述实施例中,当目标数据库系统为Hive,SQL语句为DML语句时,生成目标数据库系统的脚本语句的子句的步骤包括:根据DML语句的数据对象操作符,确定Hive对应的数据对象操作符;将DML语句中的数据对象标识转换成HiveQL语句中对应的数据对象标识;根据所确定的Hive对应的数据对象操作符和转换后的数据对象标识,生成用于对DML语句中的数据进行操作的HiveQL语句的子句。
在本发明的具体实施例中,以一些具体的DML语句为例说明,HiveQL提供与OracleSQL基本对应的查询操作支持,不支持记录级的增删改。第一,查询:常见的Oracle查询语句为:
SELECT col1,col2 FROM tab1;
SELECT COUNT(*)FROM tab1;
SELECT col1,col2 FROM tab1 WHERE col1<3;
Select col2,avg(col1)from tab1 group by col2;
与之对应的HiveQL语句为:
SELECT col1,col2 FROM tab1;
SELECT COUNT(*)FROM tab1;
SELECT col1,col2 FROM tab1 WHERE col1<3;
Select col2,avg(col1)from tab1 group by col2;
通过分析可知:与Oracle SQL相比,HiveQL支持更多的查询操作,其语法结构基本和Oracle SQL无区别。第二,插入数据:Oracle向表插入数据的常用语句为:
INSERT INTO tab1 VALUES(1,’a’);
INSERT INTO tab1 SELECT col1,col2 FROM tab2;
HiveQL中目前只支持通过子查询的方式插入数据,其语句为:
INSERT INTO tab1 SELECT col1,col2 FROM tab2;
INSERT OVERWRITE tab1 SELECT col1,col2 FROM tab2;
通过分析可知:通过查询插入数据时,HiveQL的语法架构和Oracle SQL基本相同,但多了INSERT OVERWRITE功能,即用查询的数据覆盖原表中的数据,而INSERT INTO功能是在原表中追加数据。第三,删除数据:Oracle从表中全表删除数据的语句为:
DELETE FROM tab1;
通过分析可知:HiveQL中并没有直接删除表数据的语句,一般是通过删除表,然后再重建的方式。第四,更新数据:Oracle更新表中记录的语句为:
UPDATE tab1 SET col1=2 WHERE col1=‘1’;
通过分析可知:HiveQL中并没有直接支持数据更新的语句。
为了更好的实现上述目的,如4图所示,本发明的实施例还提供了一种转换Oracle脚本语言SQL的装置,该装置包括:
获取模块41,用于根据用户输入的转换请求,获取Oracle的待转换的SQL脚本文件;
解析模块42,用于解析待转换的SQL脚本文件,并生成解析结果;
生成模块43,用于根据解析结果以及预先得到的Oracle的脚本语言SQL和目标数据库系统的脚本语言的映射关系,生成目标数据库系统的脚本语句的子句,目标数据库系统为Hive或Hbase;
转换模块44,用于将目标数据库系统的脚本语句的子句转换为可执行的目标数据库系统的脚本文件。
其中,目标数据库系统为HBase,SQL语句为DDL语句,生成模块43包括:
第一单元,用于根据DDL语句中的数据对象操作符的类型,判断HBase在执行对应的操作处理前,是否需要执行一预先操作,并在需要执行一预先操作时,针对DDL语句中的数据对象,生成该预先操作对应的一HBase Shell语句的子句;
第二单元,用于针对DDL语句,保持DDL语句中的数据对象标识不变,将DDL语句中的数据对象操作符转换为HBase中对应的操作符,得到HBase Shell语句的子句。
其中,目标数据库系统为HBase,SQL语句为DML语句,生成模块43包括:
第三单元,用于根据DML语句的数据对象操作符,确定HBase对应的数据对象操作符;
第四单元,用于根据所确定的HBase对应的数据对象操作符,保持DML语句中的数据对象标识不变,生成用于对DML语句中的数据进行操作的HBase Shell语句的子句。
其中,目标数据库系统为Hive,SQL语句为DDL语句,生成模块43包括:
第五单元,用于根据DDL语句的数据对象操作符,确定Hive对应的数据对象操作符;
第六单元,用于将DDL语句中的数据对象标识转换成HiveQL语句中对应的数据对象标识;
第七单元,用于根据所确定的Hive对应的数据对象操作符和转换后的数据对象标识,生成用于对DDL语句中的数据进行操作的HiveQL语句的子句。
其中,目标数据库系统为Hive,SQL语句为DML语句,生成模块43包括:
第八单元,用于根据DML语句的数据对象操作符,确定Hive对应的数据对象操作符;
第九单元,用于将DML语句中的数据对象标识转换成HiveQL语句中对应的数据对象标识;
第十单元,用于根据所确定的Hive对应的数据对象操作符和转换后的数据对象标识,生成用于对DML语句中的数据进行操作的HiveQL语句的子句。
其中,装置还包括:
接收模块,用于接收用户输入的转换请求;
验证模块,用于验证该请求是否合法,并在验证该请求合法时,触发获取模块41根据用户输入的转换请求,获取Oracle的待转换的SQL脚本文件。
其中,装置还包括:
展示模块,用于将目标数据库系统的脚本文件展示给用户。
其中,解析模块42包括:
判断单元,用于判断待转换的SQL脚本文件是否可以转换为目标数据库系统的脚本文件,并在待转换的SQL脚本文件可以转换为目标数据库系统的脚本文件时,触发调用单元;
调用单元,用于根据判断单元的触发,根据目标数据库系统的类型,调用对应的SQL引擎解析待转换的SQL脚本文件。
其中,转换模块44包括:
重组单元,用于根据目标数据库系统的脚本语句的结构,将目标数据库系统的脚本语句的子句进行重新组织;
合并单元,用于将重组后的子句进行合并,得到可执行的目标数据库系统的脚本文件。
需要说明的是,本发明实施例提供的转换Oracle脚本语言SQL的装置是应用上述方法的装置,即上述方法的所有实施例均适用于该装置,且均能达到相或相似的有益效果。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (18)
1.一种转换Oracle脚本语言SQL的方法,其特征在于,包括:
根据用户输入的转换请求,获取Oracle的待转换的SQL脚本文件;
解析所述待转换的SQL脚本文件,并生成解析结果;
根据所述解析结果以及预先得到的Oracle的脚本语言SQL和目标数据库系统的脚本语言的映射关系,生成目标数据库系统的脚本语句的子句,所述目标数据库系统为Hive或Hbase;
将目标数据库系统的脚本语句的子句转换为可执行的目标数据库系统的脚本文件。
2.如权利要求1所述的方法,其特征在于,所述目标数据库系统为HBase,所述SQL语句为DDL语句,所述生成目标数据库系统的脚本语句的子句的步骤包括:
根据DDL语句中的数据对象操作符的类型,判断HBase在执行对应的操作处理前,是否需要执行一预先操作,并在需要执行一预先操作时,针对所述DDL语句中的数据对象,生成该预先操作对应的一HBase Shell语句的子句;
针对所述DDL语句,保持所述DDL语句中的数据对象标识不变,将DDL语句中的数据对象操作符转换为HBase中对应的操作符,得到HBase Shell语句的子句。
3.如权利要求1所述的方法,其特征在于,所述目标数据库系统为HBase,所述SQL语句为DML语句,所述生成目标数据库系统的脚本语句的子句的步骤包括:
根据DML语句的数据对象操作符,确定HBase对应的数据对象操作符;
根据所确定的HBase对应的数据对象操作符,保持所述DML语句中的数据对象标识不变,生成用于对所述DML语句中的数据进行操作的HBase Shell语句的子句。
4.如权利要求1所述的方法,其特征在于,所述目标数据库系统为Hive,所述SQL语句为DDL语句,所述生成目标数据库系统的脚本语句的子句的步骤包括:
根据DDL语句的数据对象操作符,确定Hive对应的数据对象操作符;
将DDL语句中的数据对象标识转换成HiveQL语句中对应的数据对象标识;
根据所确定的Hive对应的数据对象操作符和转换后的数据对象标识,生成用于对所述DDL语句中的数据进行操作的HiveQL语句的子句。
5.如权利要求1所述的方法,其特征在于,所述目标数据库系统为Hive,所述SQL语句为DML语句,所述生成目标数据库系统的脚本语句的子句的步骤包括:
根据DML语句的数据对象操作符,确定Hive对应的数据对象操作符;
将DML语句中的数据对象标识转换成HiveQL语句中对应的数据对象标识;
根据所确定的Hive对应的数据对象操作符和转换后的数据对象标识,生成用于对所述DML语句中的数据进行操作的HiveQL语句的子句。
6.如权利要求1所述的方法,其特征在于,所述根据用户输入的转换请求,获取Oracle的待转换的SQL脚本文件的步骤之前,所述方法还包括:
接收用户输入的转换请求;
验证该请求是否合法;
若合法,则执行根据用户输入的转换请求,获取Oracle的待转换的SQL脚本文件的步骤;否则,结束流程。
7.如权利要求1所述的方法,其特征在于,所述将目标数据库系统的脚本语句的子句转换为可执行的目标数据库系统的脚本文件的步骤之后,所述方法还包括:
将目标数据库系统的脚本文件展示给用户。
8.如权利要求1所述的方法,其特征在于,所述解析所述待转换的SQL脚本文件,并生成解析结果的步骤包括:
判断所述待转换的SQL脚本文件是否可以转换为目标数据库系统的脚本文件;
若可以,则根据所述目标数据库系统的类型,调用对应的SQL引擎解析所述待转换的SQL脚本文件;否则,结束流程。
9.如权利要求1所述的方法,其特征在于,所述将目标数据库系统的脚本语句的子句转换为可执行的目标数据库系统的脚本文件的步骤包括:
根据目标数据库系统的脚本语句的结构,将目标数据库系统的脚本语句的子句进行重新组织;
将重组后的子句进行合并,得到可执行的目标数据库系统的脚本文件。
10.一种转换Oracle脚本语言SQL的装置,其特征在于,包括:
获取模块,用于根据用户输入的转换请求,获取Oracle的待转换的SQL脚本文件;
解析模块,用于解析所述待转换的SQL脚本文件,并生成解析结果;
生成模块,用于根据所述解析结果以及预先得到的Oracle的脚本语言SQL和目标数据库系统的脚本语言的映射关系,生成目标数据库系统的脚本语句的子句,所述目标数据库系统为Hive或Hbase;
转换模块,用于将目标数据库系统的脚本语句的子句转换为可执行的目标数据库系统的脚本文件。
11.如权利要求10所述的装置,其特征在于,所述目标数据库系统为HBase,所述SQL语句为DDL语句,所述生成模块包括:
第一单元,用于根据DDL语句中的数据对象操作符的类型,判断HBase在执行对应的操作处理前,是否需要执行一预先操作,并在需要执行一预先操作时,针对所述DDL语句中的数据对象,生成该预先操作对应的一HBase Shell语句的子句;
第二单元,用于针对所述DDL语句,保持所述DDL语句中的数据对象标识不变,将DDL语句中的数据对象操作符转换为HBase中对应的操作符,得到HBase Shell语句的子句。
12.如权利要求10所述的装置,其特征在于,所述目标数据库系统为HBase,所述SQL语句为DML语句,所述生成模块包括:
第三单元,用于根据DML语句的数据对象操作符,确定HBase对应的数据对象操作符;
第四单元,用于根据所确定的HBase对应的数据对象操作符,保持所述DML语句中的数据对象标识不变,生成用于对所述DML语句中的数据进行操作的HBase Shell语句的子句。
13.如权利要求10所述的装置,其特征在于,所述目标数据库系统为Hive,所述SQL语句为DDL语句,所述生成模块包括:
第五单元,用于根据DDL语句的数据对象操作符,确定Hive对应的数据对象操作符;
第六单元,用于将DDL语句中的数据对象标识转换成HiveQL语句中对应的数据对象标识;
第七单元,用于根据所确定的Hive对应的数据对象操作符和转换后的数据对象标识,生成用于对所述DDL语句中的数据进行操作的HiveQL语句的子句。
14.如权利要求10所述的装置,其特征在于,所述目标数据库系统为Hive,所述SQL语句为DML语句,所述生成模块包括:
第八单元,用于根据DML语句的数据对象操作符,确定Hive对应的数据对象操作符;
第九单元,用于将DML语句中的数据对象标识转换成HiveQL语句中对应的数据对象标识;
第十单元,用于根据所确定的Hive对应的数据对象操作符和转换后的数据对象标识,生成用于对所述DML语句中的数据进行操作的HiveQL语句的子句。
15.如权利要求10所述的装置,其特征在于,所述装置还包括:
接收模块,用于接收用户输入的转换请求;
验证模块,用于验证该请求是否合法,并在验证该请求合法时,触发所述获取模块根据用户输入的转换请求,获取Oracle的待转换的SQL脚本文件。
16.如权利要求10所述的装置,其特征在于,所述装置还包括:
展示模块,用于将目标数据库系统的脚本文件展示给用户。
17.如权利要求10所述的装置,其特征在于,所述解析模块包括:
判断单元,用于判断所述待转换的SQL脚本文件是否可以转换为目标数据库系统的脚本文件,并在所述待转换的SQL脚本文件可以转换为目标数据库系统的脚本文件时,触发调用单元;
调用单元,用于根据判断单元的触发,根据所述目标数据库系统的类型,调用对应的SQL引擎解析所述待转换的SQL脚本文件。
18.如权利要求10所述的装置,其特征在于,所述转换模块包括:
重组单元,用于根据目标数据库系统的脚本语句的结构,将目标数据库系统的脚本语句的子句进行重新组织;
合并单元,用于将重组后的子句进行合并,得到可执行的目标数据库系统的脚本文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510030011.9A CN105868204B (zh) | 2015-01-21 | 2015-01-21 | 一种转换Oracle脚本语言SQL的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510030011.9A CN105868204B (zh) | 2015-01-21 | 2015-01-21 | 一种转换Oracle脚本语言SQL的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105868204A CN105868204A (zh) | 2016-08-17 |
CN105868204B true CN105868204B (zh) | 2019-06-21 |
Family
ID=56623051
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510030011.9A Active CN105868204B (zh) | 2015-01-21 | 2015-01-21 | 一种转换Oracle脚本语言SQL的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105868204B (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108121709A (zh) * | 2016-11-28 | 2018-06-05 | 中兴通讯股份有限公司 | 一种搜索处理方法及装置 |
CN106970802B (zh) * | 2017-04-25 | 2024-04-09 | 北京航天飞行控制中心 | 在领域特定语言中集成编程脚本语言的方法及装置 |
CN107908679B (zh) * | 2017-10-26 | 2020-11-27 | 平安科技(深圳)有限公司 | 脚本语句转换方法、装置及计算机可读存储介质 |
CN108536745B (zh) * | 2018-02-24 | 2021-03-16 | 平安科技(深圳)有限公司 | 基于Shell的数据表提取方法、终端、设备及存储介质 |
CN109032611B (zh) * | 2018-06-06 | 2022-01-28 | 平安科技(深圳)有限公司 | 脚本部署方法、装置、计算机设备及存储介质 |
CN109376166B (zh) * | 2018-08-20 | 2023-07-04 | 中国平安财产保险股份有限公司 | 脚本转换方法、装置、计算机设备及存储介质 |
CN109408528B (zh) * | 2018-10-25 | 2022-07-15 | 北京信安世纪科技股份有限公司 | 一种数据库脚本生成方法、装置、计算装置和存储介质 |
CN109492006B (zh) * | 2018-11-08 | 2022-02-11 | 中国银行股份有限公司 | 一种基于Oracle的海量数据处理方法和装置 |
CN111382170B (zh) * | 2018-12-29 | 2023-07-14 | 北京亿阳信通科技有限公司 | 一种语句自动转换方法和装置 |
CN110083617B (zh) * | 2019-05-05 | 2021-06-01 | 上海达梦数据库有限公司 | 一种ddl语句的处理方法、装置、电子设备和介质 |
CN110231935B (zh) * | 2019-06-12 | 2023-06-30 | 上海达梦数据库有限公司 | 一种脚本执行和更新的方法、装置、设备和存储介质 |
CN110633292B (zh) * | 2019-09-19 | 2022-06-21 | 上海依图网络科技有限公司 | 一种异构数据库的查询方法、装置、介质、设备及系统 |
CN111124370B (zh) * | 2019-12-24 | 2024-04-26 | 深圳我家云网络科技有限公司 | 一种数据处理方法及相关设备 |
CN111143330B (zh) * | 2019-12-27 | 2023-10-03 | 湖南亚信软件有限公司 | 一种多模态数据库解析引擎的实现方法及装置 |
CN111259038B (zh) * | 2020-01-16 | 2023-05-30 | 北京思特奇信息技术股份有限公司 | 一种数据库查询及数据导出方法、系统、介质及设备 |
CN111694738B (zh) * | 2020-06-04 | 2023-07-18 | 贵州易鲸捷信息技术有限公司 | 一种sql测试脚本的生成方法 |
CN112328260A (zh) * | 2020-11-16 | 2021-02-05 | 中国平安财产保险股份有限公司 | 基于大数据平台的sql语句转换方法、装置和计算机设备 |
CN113282605A (zh) * | 2021-04-14 | 2021-08-20 | 上海瀚之友信息技术服务有限公司 | 一种异构数据库的实时同步系统及方法 |
CN113127124A (zh) * | 2021-04-21 | 2021-07-16 | 平安付科技服务有限公司 | 数据库语言类型切换方法、装置、计算机设备及存储介质 |
CN113934748A (zh) * | 2021-10-14 | 2022-01-14 | 工银科技有限公司 | 混合型sql脚本文件生成方法、执行方法及装置 |
CN117312420A (zh) * | 2022-06-21 | 2023-12-29 | 华为云计算技术有限公司 | 一种数据共享方法及相关系统 |
CN115757339A (zh) * | 2022-11-16 | 2023-03-07 | 恒辉信达技术有限公司 | Oracle脚本自动转Postgresql脚本方法 |
CN116010445B (zh) * | 2023-03-28 | 2023-07-25 | 恒生电子股份有限公司 | 数据库sql脚本的处理方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021877A (zh) * | 2007-03-16 | 2007-08-22 | 华为技术有限公司 | 将对象局部属性更新到关系数据库的方法及装置 |
CN101105814A (zh) * | 2007-09-11 | 2008-01-16 | 金蝶软件(中国)有限公司 | 一种将Script语言转换成SQL语言的方法及装置 |
CN101266606A (zh) * | 2007-03-15 | 2008-09-17 | 阿里巴巴公司 | 一种基于Oracle数据库的在线数据迁移方法 |
US7664795B2 (en) * | 2003-09-26 | 2010-02-16 | Microsoft Corporation | Apparatus and method for database migration |
CN102750374A (zh) * | 2012-06-20 | 2012-10-24 | 深圳市远行科技有限公司 | 一种基于数据库脚本的数据追溯和影响关系的分析方法 |
-
2015
- 2015-01-21 CN CN201510030011.9A patent/CN105868204B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7664795B2 (en) * | 2003-09-26 | 2010-02-16 | Microsoft Corporation | Apparatus and method for database migration |
CN101266606A (zh) * | 2007-03-15 | 2008-09-17 | 阿里巴巴公司 | 一种基于Oracle数据库的在线数据迁移方法 |
CN101021877A (zh) * | 2007-03-16 | 2007-08-22 | 华为技术有限公司 | 将对象局部属性更新到关系数据库的方法及装置 |
CN101105814A (zh) * | 2007-09-11 | 2008-01-16 | 金蝶软件(中国)有限公司 | 一种将Script语言转换成SQL语言的方法及装置 |
CN102750374A (zh) * | 2012-06-20 | 2012-10-24 | 深圳市远行科技有限公司 | 一种基于数据库脚本的数据追溯和影响关系的分析方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105868204A (zh) | 2016-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105868204B (zh) | 一种转换Oracle脚本语言SQL的方法及装置 | |
CN109614432B (zh) | 一种基于语法分析的获取数据血缘关系的系统及方法 | |
US6466931B1 (en) | Method and system for transparently caching and reusing query execution plans efficiently | |
US7512633B2 (en) | Conversion of hierarchically-structured HL7 specifications to relational databases | |
Hegewald et al. | XStruct: efficient schema extraction from multiple and large XML documents | |
Abiteboul et al. | Tools for data translation and integration | |
CN106934062A (zh) | 一种查询elasticsearch的实现方法及系统 | |
US7716190B2 (en) | Conversion of structured information | |
JPS59163661A (ja) | 図式的言語による照会を線型言語の照会に翻訳する計算装置 | |
KR20080066943A (ko) | 부분적 xml 검증을 수행하기 위한 방법, 관련 폼으로저장된 xml 문서 내의 데이터를 수정하기 위한 시스템및 컴퓨터 판독가능 매체 | |
US11995075B2 (en) | System and method for efficient transliteration of machine interpretable languages | |
CA2250694A1 (en) | A system, software and method for locating information in a collection of text-based information sources | |
CN112860727B (zh) | 基于大数据查询引擎的数据查询方法、装置、设备及介质 | |
CN117093599A (zh) | 面向异构数据源的统一sql查询方法 | |
CN112015722A (zh) | 数据库管理方法、数据血缘分析方法以及相关装置 | |
CN113297251A (zh) | 多源数据检索方法、装置、设备及存储介质 | |
CN105302842A (zh) | 一种数据处理方法及装置 | |
US9053207B2 (en) | Adaptive query expression builder for an on-demand data service | |
CN111695002B (zh) | 一种基于xml语句的数据库无关的查询方法 | |
CN108766507A (zh) | 一种基于CQL与标准信息模型openEHR的临床质量指标计算方法 | |
CN116795859A (zh) | 数据分析方法、装置、计算机设备和存储介质 | |
US10896227B2 (en) | Data processing system, data processing method, and data structure | |
US20080126317A1 (en) | Method and system for converting source data files into database query language | |
US20220229998A1 (en) | Lookup source framework for a natural language understanding (nlu) framework | |
CN116955393A (zh) | 一种数据处理方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 518048 Shenzhen Riverside Road, Futian District, Shenzhen, Guangdong, 1141 Applicant after: Medium shift information technology Co., Ltd. Address before: 518048 Guangdong province Futian District Shenzhen City Binhe Road, No. 9023, building 11, 41 layers of the country through the Applicant before: China Mobile (Shenzhen) Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |