CN114357051A - 基于原生JSON的SQL与NoSQL数据转换方法 - Google Patents
基于原生JSON的SQL与NoSQL数据转换方法 Download PDFInfo
- Publication number
- CN114357051A CN114357051A CN202210025153.6A CN202210025153A CN114357051A CN 114357051 A CN114357051 A CN 114357051A CN 202210025153 A CN202210025153 A CN 202210025153A CN 114357051 A CN114357051 A CN 114357051A
- Authority
- CN
- China
- Prior art keywords
- sql
- data
- class
- type
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于原生JSON的SQL与NoSQL数据转换方法,涉及数据类型转换相关技术领域,具体步骤为:获取待转换的数据;对待转换的数据进行处理,判断是否符合原生JSON的规则或标准SQL语法规则;若符合原生JSON的规则或标准SQL语法规则,则对处理后的数据进行类型判断;根据不同类型对应的转换方法转换为对应的数据。本申请使关系型数据库与对象型数据库的智能数据交互系统具有良好的通用与鲁棒性,可以高效地将任意结构的关系型数据库转换为对应的对象型数据库,大大降低了企业的开发成本,缩短了开发时间,使得开发效率大大提升。
Description
技术领域
本发明涉及数据类型转换技术领域,更具体的说是涉及一种基于原生JSON的SQL与NoSQL数据转换方法。
背景技术
随着云计算与大数据技术的飞速发展,混合云存储,一种全新的应用于关系型数据库与非关系型数据库的数据交换和存储越来越被人们所广泛应用。在混合云存储机制当中,大量的、以JSON格式进行交换和存储的数据由NoSQL文档存储系统存储和管理;与之相对,在复杂的自然关系事务中,那些具有更加复杂的数据关系的数据则被存储在关系型数据库当中。
这种混合云存储的方式,是为了充分利用两种数据格式各自的优点,避开各自的缺陷。NoSQL数据可以实现高效而简单的存取操作,适用于单表结构的高频次的存取应用场景,所以有这种特点的应用场景可以使用NoSQL数据库。而关系型数据库适用于高复杂性的关系数据,适合通过复杂的关系进行复合查询,适用于统计、预测数据模型等应用场景。同时,在大数据时代下,两种数据格式的缺点也更加明显。JSON格式的文档型数据对于数据查询或是更新都需要进行昂贵的文本处理,并且NoSQL数据库不提供事务机制功能。关系型数据则由于其复杂的逻辑关系存储,在需要高性能数据吞吐的应用场景下,无法满足大数据高吞吐性能的需求。尽管通过混合云存储,可以有效地将不同数据格式的数据进行分类存储,但是在混合云存储的环境下,关系型数据与NoSQL数据之间由于其标准格式的不同,数据模型的差异,导致彼此在数据交互上十分困难。因此寻求一种对不同类型数据之间的转换方法是本领域技术人员亟需解决的问题。
发明内容
有鉴于此,本发明提供了一种基于原生JSON的SQL与NoSQL数据转换方法,克服了上述的缺陷。
为了实现上述目的,本发明提供如下技术方案:
一种基于原生JSON的SQL与NoSQL数据转换方法,具体步骤为:
获取待转换的数据;
对待转换的数据进行处理,判断是否符合原生JSON的规则或标准SQL语法规则;
若符合原生JSON的规则或标准SQL语法规则,则对处理后的数据进行类型判断;
根据不同类型对应的转换方法转换为对应的数据。
可选的,类型包括插入、修改、删除和查询。
可选的,NoSQL数据转换为SQL数据的方法,具体为:
获取新型文档型数据;
校验新型文档型数据是否符合原生JSON的规则;若否,返回错误信息;若是,则判断待转换的程序类模型的类型,并将新型文档型数据通过ORM方法转化为程序类模型结构;
按照类型将程序类模型结构转化为相同类型的SQL标准格式;
其中,原生JSON规则是以中括号或是大括号起始,大括号或是中括号结束,大括号内是以“键:值,…”此形式排列;以此原生JSON规则校验此数据,当不符合时,返回错误信息即非JSON数据;当符合时,通过新型文档型数据节点的节点类型属性判断出待转化的程序模型的类型,再通过ORM方法转化为程序类模型结构,最后按照类型转化为相同类型的SQL标准格式。
可选的,SQL数据转换为NoSQL数据的方法,具体为:
获取任一标准SQL语句;
检测任一标准SQL语句是否符合标准SQL语法规则;若否,返回错误信息;若是,将任一标准SQL语句进行类型判断;
根据获得的类型将数据反射至对应的程序类模型结构,并转换为相同类型的新型文档型数据;
其中,获取任一标准SQL语句的方法为:
将待转换的数据以分号分割,将分割后的每条数据认定为一条独立的SQL语句;
其中,标准SQL语法规则为:
对任一标准SQL语句进行规则校验,即校验任一标准SQL语句是否符合SQL语句语法规则;其中,标准SQL语句包括四种类型,分别为:插入语句、修改语句、删除语句以及查询语句;
其中四种语句语法规则如下:
插入语句语法是INSERT INTO表名(字段名,字段名,…)VALUES(值,值,…);
修改语句语法是UPDATE表名SET字段名=值,…WHERE条件语句;
删除语句语法是DELETE FROM表名WHERE条件语句;
查询语句语法是SELECT字段名,字段名,…FROM表名WHERE条件语句;
对任一标准SQL操作语句进行规则校验具体为:
首先判断任一标准SQL操作语句是否以四种操作关键字INSERT INTO、UPDATE、DELETE FROM、SELECT开始,如果是,则继续校验,不是,则返回错误信息。然后根据不同类型的语句语法进行校验,判断是否符合语法规则,判断插入语句中是否有表名、字段名,是否有VALUES关键字,是否有值数据;修改语句是否有表名,是否有SET关键字,是否有字段名、值数据,WHERE查询条件是可选项;删除语句是否有表名数据,WHERE查询条件是可选项;查询语句是否有字段名,FROM关键字,表名数据,WHERE查询条件是可选项。
可选的,当为插入类型时,向SQL数据的转换方法为:
根据操作命令,获取SQL表名;
根据类结构中相应的数据类模型,获取数据类型模型的列名,根据列名获取SQL列字段与值;
将SQL列字段以兼职段的形式存储;
根据SQL表名、SQL列字段与值的键值对转化为插入SQL标准格式。
可选的,当为修改类型时,向SQL数据的转换方法为:
判断操作命令是否为空,根据判断结果,获取SQL表名;
根据查询数组,获取SQL查询条件;
根据类内容中的列内容信息,得到需要修改的列字段与值;
根据SQL表名、SQL查询条件、需要修改的列字段与值的键值对转化为修改SQL标准格式。
可选的,当SQL语句的类型为插入类型时,转换方法为:
通过字符串分割插入SQL语句,获得SQL表名、SQL列字段与值,并将SQL列字段与值存放到键值对类型的类中;
遍历类结构池,判断是否获得该语句对应的类内容模型,若否,返回错误信息;若是,获取类内容模型中的表名属性;
判断表名属性是否为空,若为空,判断SQL表名是否与类名一致;若不为空,则判断SQL表名是否与表名一致;
若一致,将数据反射到数据类中,得到插入类型的程序类模型;
通过ORM方法将插入类型的程序类模型转化为命令节点为插入的新型文档型数据。
可选的,当SQL语句的类型为修改类型时,转换方法为:
通过字符串分割修改SQL语句,获得SQL表名、SQL查询字符串、SQL列字段与值;
分割SQL列字段与值字符串,并转化为列数组类;
根据不同查询关键字将SQL查询字符串转换为相应的查询函数,并存放至查询数组类中;
将SQL表名、列数组类与查询数组类赋值到操作命令类中,得到修改类型的程序类模型;
通过ORM方法将修改类型的程序类模型转化为命令节点为修改的新型文档型数据。
可选的,当SQL语句的类型为删除类型时,转换方法为:
通过字符串分割删除SQL语句,并获取SQL表名与SQL查询字符串;
根据不同查询关键字将SQL查询字符串转化为相应的查询函数,并存放到查询数组类中;
将SQL表名与查询数组类赋值到操作命令类中,得到删除类型的程序类模型。
通过ORM方法将删除类型的程序类模型转化为命令节点为删除的新型文档型数据。
可选的,当SQL语句的类型为查询类型时,转换方法为:
将字符串分割查询SQL语句,获得SQL表名、SQL列字段与SQL查询字符串;
分割SQL列字段,并将其存储到列数组类中;
根据不同查询关键字转化为相应的查询函数,存放到查询数组类中;
将SQL表名、列数组类与查询数组类赋值到操作命令类中,得到查询类型的程序类模型;
通过ORM方法将查询类型的程序类模型转化为命令节点为查询的新型文档型数据。
经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种基于原生JSON的SQL与NoSQL数据转换方法,使关系型数据库与对象型数据库的智能数据交互系统具有良好的通用与鲁棒性,可以高效地将任意结构的关系型数据库转换为对应的对象型数据库,大大降低了企业的开发成本,缩短了开发时间,使得开发效率大大提升。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明的新型文档型数据格式的结构图;
图2为本发明的新型文档型数据格式结构对应的Java类图;
图3为本发明的方法流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本发明实施例公开了一种基于原生JSON的SQL与NoSQL数据转换方法,其首先定义了一种基于原生JSON的新型数据模型,该模型可以使标准的SQL语句与JSON文档型数据互相转化;如图3所示,具体步骤为:
1、将新型文档型数据转化为标准SQL语句
其中,新型文档型数据格式如图1所示,分为三个一级节点,第一节点是命令类型节点,此节点值有四种分别是插入、修改、删除与查询;第二节点是操作命令节点,此节点下有三个二级节点,该二级节点分别为表名节点、列表节点、一级查询列表节点,其中,表名节点值是字符串类型,列表节点值是字符串数组类型,一级查询列表节点值是以@为起始的查询函数数组类型;第三节点是数据节点,此节点值是键值对类型的数组。
将新型文档型数据利用ORM方法转化为程序类模型结构,其中此类的属性是命令类型、操作命令与数据,方法则是与属性相对应的get与set方法。程序类模型以泛型的形式存在,泛型类包括两个注解类,表注解类与列注解类。表注解类应用于泛型类的类名上,表示可以为表注解类的值方法提供表名值,值默认为空;列注解类应用于泛型类的属性上,表示可为列注解类的值方法提供表字段值,值默认为空。
新型文档型数据在转换到程序类模型结构时,如果违反了原生JSON的规则,则返回错误信息;如果转换成功,将根据命令类型的四种值将程序类模型进行分类,并将根据分类结果,对各个类型的程序类模型进行对应的处理。
当命令类型是插入类型时,判断操作命令是否为空,不为空时,以表名属性值作为SQL的表名;当操作命令为空时,则需要在类结构池中找到数据类的类模型,在数据类模型中获取表名。当数据类模型的表名不为空时,表名则为SQL表名,数据类模型的表名为空时,SQL表名则是模型类名。
在类结构中找到相应的数据类模型,获取数据类模型的列内容类中的列名,当列内容类的列名为空时,以属性名为SQL列字段,当列内容的列名不为空时,以列名属性作为SQL列字段。获得列字段后,将列字段以兼职段的形式存储,以列字段为key,值为value存储。根据获得的表名、列字段与值的键值对即可转化为插入SQL标准格式。
当命令类型是修改类型时,判断操作命令是否为空,不为空时,获得表名、列数组与查询数组三属性。当列数组不为空时,表名存在;当列数组为空时,判断表名是否存在,存在则以表名为SQL表名,不存在则取数据类的表名作为SQL表名。查询数组作为查询条件属性,当存在时,则是SQL查询条件。当操作命令为空时,在类结构池中找到相应的数据类的类内容模型,在类内容模型中获取表名信息。当类内容模型的表名属性不为空时,以此值作为表名信息。否则以类名属性作为表名信息。在类内容中获取列内容信息,得到要修改的列字段与值。当列内容模型中的列名属性不为空时,此值为列字段。否则以属性值作为列字段。将列字段与值以键值对的形式存储,其中列字段为key,值为value。根据表名、查询条件、列字段与值的键值对转化为修改SQL标准格式。
当命令类型是删除类型时,获取操作命令中的表名属性以及查询数组属性值,当查询数组属性不为空时,以表名与查询数组属性查询条件转化为标准的删除SQL语句。
当命令类型是查询类型时,获取操作命令中的表名属性、列数组属性以及查询数组属性值,当查询数组属性不为空时,以表名、列数组以及查询数组属性查询条件转化为标准的查询SQL语句。
2、标准SQL语句转化为文档型数据
获取标准SQL语句,首先检测此SQL语句是否符合标准SQL语法规则,不符合则返回错误信息。符合规则则根据插入、修改、删除与查询不同规则将数据反射到相应的程序类模型结构中。
当SQL语句是插入类型时,字符串分割插入SQL语句,获得表名、列字段与值,将列字段与值存放到键值对类型的类中。遍历类结构池,获得该语句对应的类内容模型。检查类内容模型中的表名属性是否为空,当不为空时,判断是否与SQL的表名一致;当为空时,判断SQL表名是否与类名一致。如果在类结构池中没有找到相对应的类模型,则返回错误。若找到对应的类内容模型,则将数据反射到数据类中,得到插入的程序类模型。通过ORM方法可以将插入类型的程序类模型转化为命令节点为插入的新型文档型数据。
当SQL语句是修改类型时,字符串分割修改SQL语句,获得表名、列字段与值以及查询字符串。通过逗号分割列字段与值字符串,将其转化为列数组类。SQL中的查询字符串根据不同查询关键字转换为相应的查询函数,存放到查询数组类中。将表名、列数组类与查询数组类赋值到操作命令类中,得到修改的程序类模型。通过ORM方法可以将修改类型的程序类模型转化为命令节点为修改的新型文档型数据。
当SQL语句是删除类型时,字符串分割删除SQL语句,获得表名与查询字符串。SQL中的查询字符串根据不同查询关键字转化为相应的查询函数,存放到查询数组类中。将表名与查询数组类赋值到操作命令类中,得到删除的程序类模型。通过ORM方法可以将删除类型的程序类模型转化为命令节点为删除的新型文档型数据。
当SQL语句是查询类型时,字符串分割查询SQL语句,获得表名、列字段与查询字符串。通过逗号分隔列字段,并将其存储到列数组类中。根据不同查询关键字转化为相应的查询函数,存放到查询数组类中。将表名、列数组类与查询数组类赋值到操作命令类中,得到查询的程序类模型。通过ORM方法可以将查询类型的程序类模型转化为命令节点为查询的新型文档型数据。
实施例2
在本实施例中定义了一种基于原生JSON的新型数据模型,即XYJSON模型结构,该模型可以将标准的SQL语句转化为JSON文档型结构。
在该模型中,分别对标准SQL的四种结构INSERT、UPDATE、DELETE、SELECT语句进行解析,将这四种结构转化为XYJSON文档型结构,如图1所示。
XYJSON模型结构基于原生JSON文档语法,其中,“commandType”表示对应的SQL命令,包括INSERT、UPDATE、DELETE与QUERY四种SQL命令格式。“commandOp”表示操作对象,其中所包含的“tableName”为对应SQL的表名;“colList”为数据库字段名,以字符串数组的形式呈现;“queryList”为查询条件,以数组的形式呈现,由查询函数组成相应的查询条件;“data”为关系型的数据,以键值对数组的形式呈现。基本语法如表1所示。
表1 XYJson模型基本语法
1、XYJson<DataClass>类结构
XYJSON模型是基于原生JSON语法结构,因此,现有的任意一种对象与JSON数据之间的映射组件都可以将XYJSON映射为对应的对象。在XYJSON模型中,XYJSON文档结构被映射为JavaBean类,而XYJson类是利用JavaBean软件组件模型来实现其可复用的类结构模型,XYJson类结构如图2所示。
data数据类型为关系型数据所对应的Java类,在XYJson类中以T泛型的形式存在。T泛型类可根据实际关系型数据的结构而发生变化。如表2所示,在T泛型类中主要包括两个注解类:Table注解类与Column注解类。Table注解类应用于T泛型类的类名上,表示使用者可为Table注解类的value方法提供表名值,value默认是空值。Column注解类应用于T泛型类的属性上,表示使用者可为Column注解类的value方法提供表字段值,value默认是空值。
表2 T泛型类中注解语法
注解类名 | 作用域 | 作用 | 值 |
Table | 类名 | 数据库表名 | 字符串类型,默认值是空 |
Column | 属性 | 数据库表字段名 | 字符串类型,默认值是空 |
2、INSERT结构
在XYJSON模型文档结构中,如表3所示,当commandType节点的值是INSERT时,commandOp节点中tableName节点是非必填项;当tableName节点有值时,此tableName值是表名的第一优先级;colList与queryList无此节点;data节点是必填项,代表关系型数据。
表3 XYJSON模型INSERT结构语法
假设Clazz是传入XYJSON模型的data泛型的具体类,则:
(1)当CommandOp类中无tableName属性,即CommandOp也是空,则采用Clazz传入类来定义数据库表名与数据库表字段名;
(2)当Clazz的类名上存在Table注解类时,则以Table注解类值来定义数据库表名;如果Table注解类值为空或无此注解类时,数据库表名就是Clazz本类名;
(3)当Clazz属性名上有Column注解类时,以每个属性上的Column值表示字段名;若该Column注解类值是空或是无此注解类时,数据库表字段名就是Clazz的属性名;
3、UPDATE结构
在XYJSON模型文档结构中,如表4所示,当commandType节点的值是UPDATE时:
(1)commandType中的tableName节点是非必填项,代表表名,如果此节点有值时,此tableName值是表名的第一优先级;
(2)colList是非必填项,代表标准SQL语句中update语句中的set中的值,以字符串数组的形式呈现;
(3)queryList是非必填项,当有值时,代表修改所需的查询条件;
(4)data是非必填项,代表标准SQL语句中update语句中的set中的值,其中以键值对的形式呈现。
在这里,colList与data必须有其一,若二者都存在时以colList为第一优先级。
表4 XYJSON模型UPDATE结构语法
假设Clazz是传入XYJSON模型的data泛型的具体类,则:
(1)当tableName无值时,以Clazz的Table注解类值代表表名;如果无Table注解类的值或是无此注解,则以Clazz类名作为表名;
(2)当colList无值时,以Clazz的Column注解类值作为数据库表字段名;当Column注解类值是空或是无此注解类时,则以当前属性名作为数据库表字段名。
4、DELETE结构
在XYJSON模型文档结构中,如表5所示,当commandType节点的值是DELETE时:
(1)commandType中的tableName节点是必填项,作为表名;
(2)colList无此项;
(3)queryList是非必填项;当queryList有值时,其值为查询条件,以查询函数类型数组的形式呈现;
(4)无data节点。
表5 XYJSON模型DELETE结构语法
5、QUERY结构
在XYJSON模型文档结构中,如表6所示,当commandType节点的值是QUERY时:
(1)commandType中的tableName节点是必填项,作为表名;
(2)colList节点是必填项,代表所要查询的字段;
(3)queryList是非必填项,当有值时,代表查询条件,以查询函数类型数组的形式呈现;
(4)无data节点。
表6 XYJSON模型QUERY结构语法
6、查询函数节点
在XYJSON模型文档结构中,commandOp节点下的queryList节点表示查询函数类型的字符串数组,每一个查询函数以“@”开始,其后紧跟函数名称与函数所需参数。查询函数中的参数可以嵌套地加入其它函数。当嵌套其它函数时,也是以@开始。查询函数用来表示SQL语句中WHERE后面的查询语句,而在XYJSON模型文档结构中,是通过查询函数来表示。模型所设计的查询函数如表7所示。
表7 XYJSON模型查询函数
当关系型数据库向NoSQL型数据库进行数据迁移时,即将关系型数据转换为对象型数据。examStore表数据以ORM的方式转换为程序中的Bean对象ExamStore Bean,其中@Table注解代表ExamStore Bean所代表的关系型数据库中表名,@Column注解代表Bean中属性所对应的关系型数据库中的字段名。而ExamStore Bean作为XYJson<ExamStore>类的属性存在,其中类型为List<ExamStore>数组类型,commandType属性值则是INSERT。以XYJson<ExamStore>控制类结构转换为原生JSON数据,此JSON数据则可以存储到NoSQL型数据库当中。
反之亦然,当NoSQL型数据库向关系型数据库进行数据迁移时,即将对象型数据转换为关系型数据。NoSQL型数据以原生JSON的形式转换为XYJson<ExamStore>控制类,其中commandType作为XYJson控制类属性,值为INSERT。其中data属性的类型是List<ExamStore>数组型,JSON中data字段转换为此Bean中。XYJson<ExamStore>类在利用ORM的方式将ExamStore Bean中的数据插入到examStore数据库表中。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种基于原生JSON的SQL与NoSQL数据转换方法,其特征在于,具体步骤为:
获取待转换的数据;
对待转换的数据进行处理,判断是否符合原生JSON的规则或标准SQL语法规则;
若符合原生JSON的规则或标准SQL语法规则,则对处理后的数据进行类型判断;
根据不同类型对应的转换方法转换为对应的数据。
2.根据权利要求1所述的一种基于原生JSON的SQL与NoSQL数据转换方法,其特征在于,类型包括插入、修改、删除和查询。
3.根据权利要求1所述的一种基于原生JSON的SQL与NoSQL数据转换方法,其特征在于,NoSQL数据转换为SQL数据的方法,具体为:
获取新型文档型数据;
校验新型文档型数据是否符合原生JSON的规则;若否,返回错误信息;若是,判断待转化的程序类模型的类型,并将新型文档型数据通过ORM方法转化为程序类模型结构;
按照类型将程序类模型结构转化为相同类型的SQL标准格式。
4.根据权利要求1所述的一种基于原生JSON的SQL与NoSQL数据转换方法,其特征在于,SQL数据转换为NoSQL数据的方法,具体为:
获取任一标准SQL语句;
检测任一标准SQL语句是否符合标准SQL语法规则;若否,返回错误信息;若是,将任一标准SQL语句进行类型判断;
根据获得的类型将数据反射至对应的程序类模型结构,并转换为相同类型的新型文档型数据。
5.根据权利要求2或3所述的一种基于原生JSON的SQL与NoSQL数据转换方法,其特征在于,当为插入类型时,向SQL数据的转换方法为:
根据操作命令,获取SQL表名;
根据类结构中相应的数据类模型,获取数据类型模型的列名,根据列名获取SQL列字段与值;
将SQL列字段以兼职段的形式存储;
根据SQL表名、SQL列字段与值的键值对转化为插入SQL标准格式。
6.根据权利要求2或3所述的一种基于原生JSON的SQL与NoSQL数据转换方法,其特征在于,当为修改类型时,向SQL数据的转换方法为:
判断操作命令是否为空,根据判断结果,获取SQL表名;
根据查询数组,获取SQL查询条件;
根据类内容中的列内容信息,得到需要修改的列字段与值;
根据SQL表名、SQL查询条件、需要修改的列字段与值的键值对转化为修改SQL标准格式。
7.根据权利要求2或4所述的一种基于原生JSON的SQL与NoSQL数据转换方法,其特征在于,当SQL语句的类型为插入类型时,转换方法为:
通过字符串分割插入SQL语句,获得SQL表名、SQL列字段与值,并将SQL列字段与值存放到键值对类型的类中;
遍历类结构池,判断是否获得该语句对应的类内容模型,若否,返回错误信息;若是,获取类内容模型中的表名属性;
判断表名属性是否为空,若表名属性为空,判断SQL表名是否与类名一致;若一致,获得与SQL表名对应的类,并将数据反射到数据类中,得到插入类型的程序类模型;若不一致,则返回错误信息,提示无法获得与SQL表名对应的类;若表名属性不为空,则判断SQL表名是否与表名属性一致,若一致,则获得与SQL表名对应的类,并将数据反射到数据类中,得到插入类型的程序类模型;若不一致,则返回错误信息,提示无法获得与SQL表名对应的类;
通过ORM方法将插入类型的程序类模型转化为命令节点为插入的新型文档型数据。
8.根据权利要求2或4所述的一种基于原生JSON的SQL与NoSQL数据转换方法,其特征在于,当SQL语句的类型为修改类型时,转换方法为:
通过字符串分割修改SQL语句,获得SQL表名、SQL查询字符串、SQL列字段与值;
分割SQL列字段与值字符串,并转化为列数组类;
根据不同查询关键字将SQL查询字符串转换为相应的查询函数,并存放至查询数组类中;
将SQL表名、列数组类与查询数组类赋值到操作命令类中,得到修改类型的程序类模型;
通过ORM方法将修改类型的程序类模型转化为命令节点为修改的新型文档型数据。
9.根据权利要求2或4所述的一种基于原生JSON的SQL与NoSQL数据转换方法,其特征在于,当SQL语句的类型为删除类型时,转换方法为:
通过字符串分割删除SQL语句,并获取SQL表名与SQL查询字符串;
根据不同查询关键字将SQL查询字符串转化为相应的查询函数,并存放到查询数组类中;
将SQL表名与查询数组类赋值到操作命令类中,得到删除类型的程序类模型。
通过ORM方法将删除类型的程序类模型转化为命令节点为删除的新型文档型数据。
10.根据权利要求2或4所述的一种基于原生JSON的SQL与NoSQL数据转换方法,其特征在于,当SQL语句的类型为查询类型时,转换方法为:
将字符串分割查询SQL语句,获得SQL表名、SQL列字段与SQL查询字符串;
分割SQL列字段,并将其存储到列数组类中;
根据不同查询关键字转化为相应的查询函数,存放到查询数组类中;
将SQL表名、列数组类与查询数组类赋值到操作命令类中,得到查询类型的程序类模型;
通过ORM方法将查询类型的程序类模型转化为命令节点为查询的新型文档型数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210025153.6A CN114357051A (zh) | 2022-01-11 | 2022-01-11 | 基于原生JSON的SQL与NoSQL数据转换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210025153.6A CN114357051A (zh) | 2022-01-11 | 2022-01-11 | 基于原生JSON的SQL与NoSQL数据转换方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114357051A true CN114357051A (zh) | 2022-04-15 |
Family
ID=81108953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210025153.6A Pending CN114357051A (zh) | 2022-01-11 | 2022-01-11 | 基于原生JSON的SQL与NoSQL数据转换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114357051A (zh) |
-
2022
- 2022-01-11 CN CN202210025153.6A patent/CN114357051A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021164226A1 (zh) | 法律案件知识图谱查询方法、装置、设备及存储介质 | |
US6449620B1 (en) | Method and apparatus for generating information pages using semi-structured data stored in a structured manner | |
US10289717B2 (en) | Semantic search apparatus and method using mobile terminal | |
US7162469B2 (en) | Querying an object for properties | |
US7124144B2 (en) | Method and apparatus for storing semi-structured data in a structured manner | |
US10437804B1 (en) | Storing graph data representing workflow management | |
US7403940B2 (en) | Optimal storage and retrieval of XML data | |
US20070239681A1 (en) | Techniques of efficient XML meta-data query using XML table index | |
US7707159B2 (en) | Method and apparatus for storing semi-structured data in a structured manner | |
CN104765731A (zh) | 数据库查询优化方法和设备 | |
EP3608801A1 (en) | Method of rapidly searching element information in a bim model | |
CN112231321B (zh) | 一种Oracle二级索引及索引实时同步方法 | |
US11416458B2 (en) | Efficient indexing for querying arrays in databases | |
US7519574B2 (en) | Associating information related to components in structured documents stored in their native format in a database | |
US7509332B1 (en) | Customized indexes for user defined data types | |
US7159171B2 (en) | Structured document management system, structured document management method, search device and search method | |
US20060242169A1 (en) | Storing and indexing hierarchical data spatially | |
CN111078705A (zh) | 基于Spark平台建立数据索引方法及数据查询方法 | |
JP4724177B2 (ja) | Xmlデータにアクセスするためのインデックス | |
CN110008448B (zh) | 将SQL代码自动转换为Java代码的方法和装置 | |
US20050060307A1 (en) | System, method, and service for datatype caching, resolving, and escalating an SQL template with references | |
US7299224B2 (en) | Method and infrastructure for processing queries in a database | |
CN116049193A (zh) | 数据存储方法及装置 | |
CN115994146A (zh) | 一种混合式数据存储引擎系统及数据存储方法、访问方法 | |
CN114357051A (zh) | 基于原生JSON的SQL与NoSQL数据转换方法 |
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 |