CN115525671A - 数据查询方法、装置、设备及存储介质 - Google Patents
数据查询方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115525671A CN115525671A CN202211075873.XA CN202211075873A CN115525671A CN 115525671 A CN115525671 A CN 115525671A CN 202211075873 A CN202211075873 A CN 202211075873A CN 115525671 A CN115525671 A CN 115525671A
- Authority
- CN
- China
- Prior art keywords
- target
- query
- data
- database
- statement
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据查询方法、装置、设备及存储介质。该方法拦截目标终端向目标数据库发送的数据查询请求;提取数据查询请求中的查询语句,并将查询语句转换为目标数据库可识别的目标查询语句;根据目标查询语句从目标数据库中获取数据查询结果,并将数据查询结果发送至目标终端。由于本发明是拦截目标终端向目标数据库发送的数据查询请求;提取数据查询请求中的查询语句,将查询语句转换为目标数据库可识别的目标查询语句;根据目标查询语句从目标数据库中获取数据查询结果。相对于现有的在替换数据库时,需要替换终端中的查询语句的方式,本发明上述方式能够将查询语句转换为目标数据库可识别的目标查询语句,提高数据库的替换效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据查询方法、装置、设备及存储介质。
背景技术
目前大部分企业使用的数据库都为关系型数据库或其他数据库,而现在国产数据库发展迅猛,很多企业会在发展一定阶段或甲方要求下使用国产数据库,如果目前的项目有几十甚至上百个应用系统,那需要对每个系统的数据库连接信息和结构化查询语言进行替换,并且还会因为不同系统的语言不同,提高了替换难度。因此,如何高效的进行数据库的替换成为了亟待解决的技术问题。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供了一种数据查询方法、装置、设备及存储介质,旨在解决现有技术数据库替换时工作量大,替换效率不高的技术问题。
为实现上述目的,本发明提供了一种数据查询方法,所述方法包括以下步骤:
拦截目标终端向目标数据库发送的数据查询请求;
提取所述数据查询请求中的查询语句,并将所述查询语句转换为所述目标数据库可识别的目标查询语句;
根据所述目标查询语句从所述目标数据库中获取数据查询结果,并将所述数据查询结果发送至所述目标终端。
可选地,所述提取所述数据查询请求中的查询语句,并将所述查询语句转换为所述目标数据库可识别的目标查询语句的步骤,包括:
提取所述数据查询请求中的查询语句;
确定所述查询语句中所述目标数据库不能识别的待替换语句;
对所述待替换语句进行语法转换,以将所述查询语句转换为所述目标数据库可识别的目标查询语句。
可选地,所述对所述待替换语句进行语法转换的步骤,包括:
获取所述待替换语句在所述查询语句中的起始位置和结束位置;
获取所述待替换语句对应的目标语句;
根据所述起始位置、所述结束位置和所述目标语句对所述待替换语句进行语法转换。
可选地,所述获取所述待替换语句对应的目标语句的步骤,包括:
获取所述目标终端对应的原数据库;
获取目标数据库与所述原数据库的语句映射表;
根据所述语句映射表查找所述待替换语句对应的目标语句。
可选地,所述拦截目标终端向目标数据库发送的数据查询请求的步骤之前,还包括:
获取目标数据库的数据库连接信息;
根据所述数据库连接信息连接目标数据库。
可选地,所述数据库连接信息包括目标数据库的数据源信息和数据驱动信息;
所述根据所述数据库连接信息连接目标数据库的步骤,包括:
根据所述数据源信息和所述数据驱动信息连接目标数据库。
可选地,所述根据所述目标查询语句从所述目标数据库中获取数据查询结果,并将所述数据查询结果发送至所述目标终端的步骤,包括:
根据所述目标查询语句从所述目标数据库中获取数据查询结果;
获取所述目标终端对应的原数据库的数据协议;
根据所述数据协议对所述数据查询结果进行编码伪装,生成目标数据查询结果;
将所述目标数据查询结果发送至所述目标终端。
可选地,所述拦截目标终端向目标数据库发送的数据查询请求的步骤之前,还包括:
获取目标终端对应的原数据库的原数据库连接信息;
根据所述原数据库连接信息连接所述原数据库;
获取所述原数据库中的待迁移数据;
将所述待迁移数据迁移至目标数据库。
可选地,所述将所述待迁移数据迁移至目标数据库的步骤,包括:
获取所述待迁移数据的表结构信息;
根据所述表结构信息在目标数据库中创建数据表;
根据创建的数据表将所述待迁移数据迁移至目标数据库。
可选地,所述提取所述数据查询请求中的查询语句的步骤,包括:
对所述数据查询请求对应的数据包进行解码,获得解码数据;
从所述解码数据中提取查询语句。
此外,为实现上述目的,本发明还提供一种数据查询装置,所述装置包括:
拦截模块,用于拦截目标终端向目标数据库发送的数据查询请求;
语句转换模块,用于提取所述数据查询请求中的查询语句,并将所述查询语句转换为所述目标数据库可识别的目标查询语句;
查询模块,用于根据所述目标查询语句从所述目标数据库中获取数据查询结果,并将所述数据查询结果发送至所述目标终端。
可选地,所述语句转换模块,还用于提取所述数据查询请求中的查询语句;
确定所述查询语句中所述目标数据库不能识别的待替换语句;
对所述待替换语句进行语法转换,以将所述查询语句转换为所述目标数据库可识别的目标查询语句。
可选地,所述语句转换模块,还用于获取所述待替换语句在所述查询语句中的起始位置和结束位置;
获取所述待替换语句对应的目标语句;
根据所述起始位置、所述结束位置和所述目标语句对所述待替换语句进行语法转换。
可选地,所述语句转换模块,还用于获取所述目标终端对应的原数据库;
获取目标数据库与所述原数据库的语句映射表;
根据所述语句映射表查找所述待替换语句对应的目标语句。
可选地,所述拦截模块,还用于获取目标数据库的数据库连接信息;
根据所述数据库连接信息连接目标数据库。
可选地,所述拦截模块,还用于根据所述数据源信息和所述数据驱动信息连接目标数据库。
可选地,所述查询模块,还用于根据所述目标查询语句从所述目标数据库中获取数据查询结果;
获取所述目标终端对应的原数据库的数据协议;
根据所述数据协议对所述数据查询结果进行编码伪装,生成目标数据查询结果;
将所述目标数据查询结果发送至所述目标终端。
可选地,所述拦截模块,还用于获取目标终端对应的原数据库的原数据库连接信息;
根据所述原数据库连接信息连接所述原数据库;
获取所述原数据库中的待迁移数据;
将所述待迁移数据迁移至目标数据库。
可选地,所述拦截模块,还用于获取所述待迁移数据的表结构信息;
根据所述表结构信息在目标数据库中创建数据表;
根据创建的数据表将所述待迁移数据迁移至目标数据库。
可选地,所述语句转换模块,还用于对所述数据查询请求对应的数据包进行解码,获得解码数据;
从所述解码数据中提取查询语句。
此外,为实现上述目的,本发明还提出一种数据查询设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据查询程序,所述数据查询程序配置为实现如上文所述的数据查询方法的步骤。
此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有数据查询程序,所述数据查询程序被处理器执行时实现如上文所述的数据查询方法的步骤。
本发明拦截目标终端向目标数据库发送的数据查询请求;提取所述数据查询请求中的查询语句,并将所述查询语句转换为所述目标数据库可识别的目标查询语句;根据所述目标查询语句从所述目标数据库中获取数据查询结果,并将所述数据查询结果发送至所述目标终端。由于本发明是拦截目标终端向目标数据库发送的数据查询请求;提取数据查询请求中的查询语句,将查询语句转换为目标数据库可识别的目标查询语句;根据目标查询语句从目标数据库中获取数据查询结果。相对于现有的在替换数据库时,需要替换终端中的查询语句的方式,本发明上述方式能够将查询语句转换为目标数据库可识别的目标查询语句,提高数据库的替换效率。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的数据查询设备的结构示意图;
图2为本发明数据查询方法第一实施例的流程示意图;
图3为本发明数据查询方法第二实施例的流程示意图;
图4为本发明数据查询方法第三实施例的流程示意图;
图5为本发明数据查询装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的数据查询设备结构示意图。
如图1所示,该数据查询设备可以包括:处理器1001,例如中央处理器 (CentralProcessing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘 (Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(Wireless-Fidelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(RandomAccess Memory,RAM),也可以是稳定的非易失性存储器 (Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对数据查询设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及数据查询程序。
在图1所示的数据查询设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明数据查询设备中的处理器1001、存储器1005可以设置在数据查询设备中,所述数据查询设备通过处理器1001调用存储器1005中存储的数据查询程序,并执行本发明实施例提供的数据查询方法。
基于上述数据查询设备,本发明实施例提供了一种数据查询方法,参照图2,图2为本发明数据查询方法第一实施例的流程示意图。
本实施例中,所述数据查询方法包括以下步骤:
步骤S10:拦截目标终端向目标数据库发送的数据查询请求。
需要说明的是,本实施例的执行主体可以是一种具有数据处理、网络通信以及程序运行功能的计算服务设备,例如手机、平板电脑、个人电脑等,或者是一种能够实现上述功能的电子设备或数据库替换代理程序。以下以所述数据库替换代理程序为例,对本实施例及下述各实施例进行说明。
需要说明的是,所述目标终端可以是需要更换连接数据库的系统。例如, A系统原来连接的数据库为mysql数据库,需要将连接的mysql数据库更改为国产的亿方云或达梦数据库,则所述A系统可称为目标终端,亿方云或达梦数据库可称为目标数据库。所述数据查询请求可以是所述目标终端向目标数据库发送的包含结构化查询语言的数据查询或增删改查等请求。
进一步的,为了提高更换数据库的效率,所述步骤S10之前,可包括:获取目标终端对应的原数据库的原数据库连接信息;根据所述原数据库连接信息连接所述原数据库;获取所述原数据库中的待迁移数据;将所述待迁移数据迁移至目标数据库。
需要说明的是,所述原数据库可以是所述目标终端更换数据库之前对应的数据库。所述原数据库连接信息可以是连接所述原数据库的信息,包括jdbc 中的DataSource和drive类路径等信息。所述待迁移数据可以是所述原数据库中的全部数据。所述将所述待迁移数据迁移至目标数据库可以是获取所述待迁移数据的表结构信息;根据所述表结构信息在目标数据库中创建数据表;根据创建的数据表将所述待迁移数据迁移至目标数据库。
需要说明的是,所述表结构信息可以是所述待迁移数据在所述原数据库中存储时的表信息,所述根据所述表结构信息在目标数据库中创建数据表可以是参照所述表结构信息在目标数据库中创建同样的数据表用于存储所述待迁移数据。
步骤S20:提取所述数据查询请求中的查询语句,并将所述查询语句转换为所述目标数据库可识别的目标查询语句。
需要说明的是,所述提取所述数据查询请求中的查询语句可以是先对数据查询请求对应的数据包进行解码,获得解码数据,提取所述解码数据中的结构化查询语言。所述将所述查询语句转换为所述目标数据库可识别的目标查询语句可以是根据所述查询语句查找预设的原数据库与目标数据库的语法映射表确定目标语句,将所述查询语句替换为目标语句即得到目标数据库可识别的目标查询语句。所述语法映射表可以是预先设置的原数据库与目标数据库的结构化查询语言映射关系表,例如,可参照下表1和表2,表1为MySQL 数据库与金仓数据库的语法映射表,表2为MySQL数据库与达梦数据库的语法映射表:
表1-MySQL数据库与金仓数据库的语法映射表
表2为MySQL数据库与达梦数据库的语法映射表
步骤S30:根据所述目标查询语句从所述目标数据库中获取数据查询结果,并将所述数据查询结果发送至所述目标终端。
需要说明的是,所述根据所述目标查询语句从所述目标数据库中获取数据查询结果可以是根据所述目标查询语句查询目标数据库,得到所述目标查询语句对应的数据查询结果。
进一步的,为了使目标终端对替换数据库无感,所述步骤S30,可包括:根据所述目标查询语句从所述目标数据库中获取数据查询结果;获取所述目标终端对应的原数据库的数据协议;根据所述数据协议对所述数据查询结果进行编码伪装,生成目标数据查询结果;将所述目标数据查询结果发送至所述目标终端。
需要说明的是,所述数据协议可以是原数据库中的数据交互协议,所述根据所述数据协议对所述数据查询结果进行编码伪装可以是根据所述数据协议对所述数据查询结果进行编码,将数据查询结果伪装成原数据库的协议返回至目标终端。
本实施例拦截目标终端向目标数据库发送的数据查询请求;提取所述数据查询请求中的查询语句,并将所述查询语句转换为所述目标数据库可识别的目标查询语句;根据所述目标查询语句从所述目标数据库中获取数据查询结果,并将所述数据查询结果发送至所述目标终端。由于本实施例是拦截目标终端向目标数据库发送的数据查询请求;提取数据查询请求中的查询语句,将查询语句转换为目标数据库可识别的目标查询语句;根据目标查询语句从目标数据库中获取数据查询结果。相对于现有的在替换数据库时,需要替换终端中的查询语句的方式,本实施例上述方式能够将查询语句转换为目标数据库可识别的目标查询语句,提高数据库的替换效率。
参考图3,图3为本发明数据查询方法第二实施例的流程示意图。
基于上述第一实施例,在本实施例中,所述步骤S20包括:
步骤S201:提取所述数据查询请求中的查询语句。
需要说明的是,所述提取所述数据查询请求中的查询语句可以是提取所述数据查询请求中的结构化查询语言。
步骤S202:确定所述查询语句中所述目标数据库不能识别的待替换语句。
需要说明的是,所述确定所述查询语句中所述目标数据库不能识别的待替换语句可以是通过分库分表工具(sharding-proxy)提取所述查询语句中不能被目标数据库识别的待替换语句。
步骤S203:对所述待替换语句进行语法转换,以将所述查询语句转换为所述目标数据库可识别的目标查询语句。
需要说明的是,所述对所述待替换语句进行语法转换可以是依据语法映射表查询所述待替换语句对应的目标语句,进而根据目标语句对待替换语句进行替换,以将所述查询语句转换为所述目标数据库可识别的目标查询语句。
进一步的,为了提高查询语句的转换效率,进而提高数据库更换的效率,所述对所述待替换语句进行语法转换的步骤,包括:获取所述待替换语句在所述查询语句中的起始位置和结束位置;获取所述待替换语句对应的目标语句;根据所述起始位置、所述结束位置和所述目标语句对所述待替换语句进行语法转换。
需要说明的是,所述获取所述待替换语句在所述查询语句中的起始位置和结束位置可以是通过分库分表工具(sharding-proxy)确定待替换语句在所述查询语句中的起始位置和结束位置。并将待替换语句对应的目标语句根据所述起始位置和所述结束位置替换待替换语句,得到替换后的目标查询语句。所述获取所述待替换语句对应的目标语句的步骤,包括:获取所述目标终端对应的原数据库;获取目标数据库与所述原数据库的语句映射表;根据所述语句映射表查找所述待替换语句对应的目标语句。所述语句映射表可以参照上述实施例中的语法映射表。
在具体实施中,数据库替换代理程序在替换待替换语句时,采用 StringBuilder的append进行语句拼接。而每个拼接点则可以通过SQLToken 对象设置,因默认的SQLToken无法设置复制的位置拼接,所以通过 BaseSetStopReplaceToke进行设置,BaseSetStopReplaceToke主要包含如下属性:startIndex起始位置、stopIndex结束位置以及value需要替换的sql内容,当判断出需要替换的部分,即待替换语句,就获取待替换语句在查询语句的起始位置和结束位置然后把要替换的待替换语句都放入到token中,可参照以下实现代码:
context.getFunctionReplaceGenerator().addToken(newBaseSetStopReplaceToken(index,indexStopIndex,getTargetSql()));
在重新生成sql的时候遍历token
for(SQLToken each:context.getSqlTokens()){
result.append(getComposableSQLTokenText((ComposableSQLToken)each));
result.append(getConjunctionText(each));
}
通过substring进行语句替换
private String getConjunctionText(final SQLToken sqlToken){
Return context.getSql().substring(getStartIndex(sqlToken),getStopIndex(sqlToken));
}
本实施例提取所述数据查询请求中的查询语句;确定所述查询语句中所述目标数据库不能识别的待替换语句;对所述待替换语句进行语法转换,以将所述查询语句转换为所述目标数据库可识别的目标查询语句。本实施例能够对目标数据库不能识别的待替换语句进行语法转换,将查询语句转换为目标数据库可识别的目标查询语句,根据目标查询语句从目标数据库中获取数据查询结果,进而在更换数据库时,提高数据库的替换效率。
参考图4,图4为本发明数据查询方法第三实施例的流程示意图。
基于上述各实施例,在本实施例中,所述步骤S10之前,所述方法还包括:
步骤S01:获取目标数据库的数据库连接信息。
需要说明的是,所述数据库连接信息包括连接目标数据库时需要的目标数据库的jdbc信息,包括目标数据库的数据源信息和数据驱动信息,数据源信息可以是数据库的DataSource信息。数据驱动信息可以是drive类路径信息。
步骤S02:根据所述数据库连接信息连接目标数据库。
需要说明的是,所述根据所述数据库连接信息连接目标数据库可以是根据所述数据源信息和所述数据驱动信息连接目标数据库。
在具体实施中,数据库替换代理程序基于shardingsphere扩展点替换连接数据库的jdbc的DataSource和drive类路径为国产数据库,并修改url和版本号解析。例如,在原数据库为MySQL数据库,目标数据库为达梦数据库时,具体实现代码可以是:
//设置mysqlsql语法解析
public DatabaseType getTrunkDatabaseType(){
return DatabaseTypeRegistry.getActualDatabaseType("MySQL");
}
//设置解析达梦数据库的url头信息
public Collection<String>getJdbcUrlPrefixes(){
return Arrays.asList("jdbc:dm:");
}
//设置jdbc的DataSource为达梦jdbc的DataSource
public Optional<String>getDataSourceClassName(){
return Optional.of("dm.jdbc.driver.DmdbDataSource");
}
//设置jdbc的Driver为达梦的jdbc的Driver
public String getDriverClassName(){
return"dm.jdbc.driver.DmDriver";
}通过如上改动来实现对mysql语法进行解析然后调用达梦的jdbc进行 sql调用,并且修改url解析部分来识别达梦的url。
在原数据库为MySQL数据库,目标数据库为金仓数据库时,具体实现代码可以是:
//设置mysqlsql语法解析
public DatabaseType getTrunkDatabaseType(){
return DatabaseTypeRegistry.getActualDatabaseType("MySQL");
}
//设置解析金仓数据库的url头信息
public Collection<String>getJdbcUrlPrefixes(){
return Arrays.asList("jdbc:kingbase8:");
}
//设置jdbc的DataSource为达梦jdbc的DataSource
public Optional<String>getDataSourceClassName(){
return Optional.of("com.kingbase8.ds.KBSimpleDataSource");
}
//设置jdbc的Driver为达梦的jdbc的Driver
public String getDriverClassName(){
return"com.kingbase8.Driver";
}
应理解的是,为了连接目标数据库,还需要基于shardingsphere扩展点替换连接数据库的XAConnection和XADataSource类路径为目标数据库,例如,在目标数据库为达梦数据库时,适配改造的核心代码如下:
//设置jdbc的Connection为达梦jdbc的Connection
private Class<Connection>getJDBCConnectionClass(){
return(Class<Connection>)
Class.forName("dm.jdbc.driver.DmdbConnection");
}
//设置jdbc的XAConnection为达梦jdbc的XAConnection
private Constructor<?>getXAConnectionConstructor(){
Return
Class.forName("dm.jdbc.driver.DmdbXAConnection").getConstructor(Class.forNa me("dm.jdbc.driver.DmdbConnection"));
}
//设置jdbc的XADataSource为达梦jdbc的XADataSource
public Collection<String>getXADriverClassName(){
return Collections.singletonList("dm.jdbc.driver.DmdbXADataSource");
}
本实施例获取目标数据库的数据库连接信息,所述数据库连接信息包括目标数据库的数据源信息和数据驱动信息,根据所述数据源信息和所述数据驱动信息连接目标数据库。本实施例中根据目标数据库的数据源信息和数据驱动信息连接目标数据库。进而在数据库替换时,可以将对原数据库的数据查询请求转发至目标数据苦,不用更改目标终端中的结构化查询语句,提高数据库替换的效率。
参照图5,图5为本发明数据查询装置第一实施例的结构框图。
如图5所示,本发明实施例提出的数据查询装置包括:
拦截模块10,用于拦截目标终端向目标数据库发送的数据查询请求;
语句转换模块20,用于提取所述数据查询请求中的查询语句,并将所述查询语句转换为所述目标数据库可识别的目标查询语句;
查询模块30,用于根据所述目标查询语句从所述目标数据库中获取数据查询结果,并将所述数据查询结果发送至所述目标终端。
本实施例拦截目标终端向目标数据库发送的数据查询请求;提取所述数据查询请求中的查询语句,并将所述查询语句转换为所述目标数据库可识别的目标查询语句;根据所述目标查询语句从所述目标数据库中获取数据查询结果,并将所述数据查询结果发送至所述目标终端。由于本实施例是拦截目标终端向目标数据库发送的数据查询请求;提取数据查询请求中的查询语句,将查询语句转换为目标数据库可识别的目标查询语句;根据目标查询语句从目标数据库中获取数据查询结果。相对于现有的在替换数据库时,需要替换终端中的查询语句的方式,本实施例上述方式能够将查询语句转换为目标数据库可识别的目标查询语句,提高数据库的替换效率。
需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的,此处不做限制。
另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的数据查询方法,此处不再赘述。
基于本发明上述数据查询装置第一实施例,提出本发明数据查询装置的第二实施例。
在本实施例中,所述语句转换模块20,还用于提取所述数据查询请求中的查询语句;
确定所述查询语句中所述目标数据库不能识别的待替换语句;
对所述待替换语句进行语法转换,以将所述查询语句转换为所述目标数据库可识别的目标查询语句。
进一步的,所述语句转换模块20,还用于获取所述待替换语句在所述查询语句中的起始位置和结束位置;
获取所述待替换语句对应的目标语句;
根据所述起始位置、所述结束位置和所述目标语句对所述待替换语句进行语法转换。
进一步的,所述语句转换模块20,还用于获取所述目标终端对应的原数据库;
获取目标数据库与所述原数据库的语句映射表;
根据所述语句映射表查找所述待替换语句对应的目标语句。
进一步的,所述拦截模块10,还用于获取目标数据库的数据库连接信息;
根据所述数据库连接信息连接目标数据库。
进一步的,所述拦截模块10,还用于根据所述数据源信息和所述数据驱动信息连接目标数据库。
进一步的,所述查询模块30,还用于根据所述目标查询语句从所述目标数据库中获取数据查询结果;
获取所述目标终端对应的原数据库的数据协议;
根据所述数据协议对所述数据查询结果进行编码伪装,生成目标数据查询结果;
将所述目标数据查询结果发送至所述目标终端。
进一步的,所述拦截模块10,还用于获取目标终端对应的原数据库的原数据库连接信息;
根据所述原数据库连接信息连接所述原数据库;
获取所述原数据库中的待迁移数据;
将所述待迁移数据迁移至目标数据库。
进一步的,所述拦截模块10,还用于获取所述待迁移数据的表结构信息;
根据所述表结构信息在目标数据库中创建数据表;
根据创建的数据表将所述待迁移数据迁移至目标数据库。
进一步的,所述语句转换模块20,还用于对所述数据查询请求对应的数据包进行解码,获得解码数据;
从所述解码数据中提取查询语句。
本发明数据查询装置的其他实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有数据查询程序,所述数据查询程序被处理器执行时实现如上文所述的数据查询方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器/随机存取存储器、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
本发明公开了A1、一种数据查询方法,所述数据查询方法包括以下步骤:
拦截目标终端向目标数据库发送的数据查询请求;
提取所述数据查询请求中的查询语句,并将所述查询语句转换为所述目标数据库可识别的目标查询语句;
根据所述目标查询语句从所述目标数据库中获取数据查询结果,并将所述数据查询结果发送至所述目标终端。
A2、如A1所述的数据查询方法,所述提取所述数据查询请求中的查询语句,并将所述查询语句转换为所述目标数据库可识别的目标查询语句的步骤,包括:
提取所述数据查询请求中的查询语句;
确定所述查询语句中所述目标数据库不能识别的待替换语句;
对所述待替换语句进行语法转换,以将所述查询语句转换为所述目标数据库可识别的目标查询语句。
A3、如A2所述的数据查询方法,所述对所述待替换语句进行语法转换的步骤,包括:
获取所述待替换语句在所述查询语句中的起始位置和结束位置;
获取所述待替换语句对应的目标语句;
根据所述起始位置、所述结束位置和所述目标语句对所述待替换语句进行语法转换。
A4、如A3所述的数据查询方法,所述获取所述待替换语句对应的目标语句的步骤,包括:
获取所述目标终端对应的原数据库;
获取目标数据库与所述原数据库的语句映射表;
根据所述语句映射表查找所述待替换语句对应的目标语句。
A5、如A1-A4任一项所述的数据查询方法,所述拦截目标终端向目标数据库发送的数据查询请求的步骤之前,还包括:
获取目标数据库的数据库连接信息;
根据所述数据库连接信息连接目标数据库。
A6、如A5所述的数据查询方法,所述数据库连接信息包括目标数据库的数据源信息和数据驱动信息;
所述根据所述数据库连接信息连接目标数据库的步骤,包括:
根据所述数据源信息和所述数据驱动信息连接目标数据库。
A7、如A1-A4任一项所述的数据查询方法,所述根据所述目标查询语句从所述目标数据库中获取数据查询结果,并将所述数据查询结果发送至所述目标终端的步骤,包括:
根据所述目标查询语句从所述目标数据库中获取数据查询结果;
获取所述目标终端对应的原数据库的数据协议;
根据所述数据协议对所述数据查询结果进行编码伪装,生成目标数据查询结果;
将所述目标数据查询结果发送至所述目标终端。
A8、如A1-A4任一项所述的数据查询方法,所述拦截目标终端向目标数据库发送的数据查询请求的步骤之前,还包括:
获取目标终端对应的原数据库的原数据库连接信息;
根据所述原数据库连接信息连接所述原数据库;
获取所述原数据库中的待迁移数据;
将所述待迁移数据迁移至目标数据库。
A9、如A8所述的数据查询方法,所述将所述待迁移数据迁移至目标数据库的步骤,包括:
获取所述待迁移数据的表结构信息;
根据所述表结构信息在目标数据库中创建数据表;
根据创建的数据表将所述待迁移数据迁移至目标数据库。
A10、如A1-A4任一项所述的数据查询方法,所述提取所述数据查询请求中的查询语句的步骤,包括:
对所述数据查询请求对应的数据包进行解码,获得解码数据;
从所述解码数据中提取查询语句。
本发明公开了B11、一种数据查询装置,所述数据查询装置包括:
拦截模块,用于拦截目标终端向目标数据库发送的数据查询请求;
语句转换模块,用于提取所述数据查询请求中的查询语句,并将所述查询语句转换为所述目标数据库可识别的目标查询语句;
查询模块,用于根据所述目标查询语句从所述目标数据库中获取数据查询结果,并将所述数据查询结果发送至所述目标终端。
B12、如B11所述的数据查询装置,所述语句转换模块,还用于提取所述数据查询请求中的查询语句;
确定所述查询语句中所述目标数据库不能识别的待替换语句;
对所述待替换语句进行语法转换,以将所述查询语句转换为所述目标数据库可识别的目标查询语句。
B13、如B12所述的数据查询装置,所述语句转换模块,还用于获取所述待替换语句在所述查询语句中的起始位置和结束位置;
获取所述待替换语句对应的目标语句;
根据所述起始位置、所述结束位置和所述目标语句对所述待替换语句进行语法转换。
B14、如B13所述的数据查询装置,所述语句转换模块,还用于获取所述目标终端对应的原数据库;
获取目标数据库与所述原数据库的语句映射表;
根据所述语句映射表查找所述待替换语句对应的目标语句。
B15、如B11-B14任一项所述的数据查询装置,所述拦截模块,还用于获取目标数据库的数据库连接信息;
根据所述数据库连接信息连接目标数据库。
B16、如B11-B14任一项所述的数据查询装置,所述数据库连接信息包括目标数据库的数据源信息和数据驱动信息
所述拦截模块,还用于根据所述数据源信息和所述数据驱动信息连接目标数据库。
B17、如B11-B14任一项所述的数据查询装置,所述查询模块,还用于根据所述目标查询语句从所述目标数据库中获取数据查询结果;
获取所述目标终端对应的原数据库的数据协议;
根据所述数据协议对所述数据查询结果进行编码伪装,生成目标数据查询结果;
将所述目标数据查询结果发送至所述目标终端。
B18、如B11-B14任一项所述的数据查询装置,所述拦截模块,还用于获取目标终端对应的原数据库的原数据库连接信息;
根据所述原数据库连接信息连接所述原数据库;
获取所述原数据库中的待迁移数据;
将所述待迁移数据迁移至目标数据库。
本发明公开了C19、一种数据查询设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据查询程序,所述数据查询程序配置为实现如A1至A10中任一项所述的数据查询方法的步骤。
本发明公开了D20、一种存储介质,所述存储介质上存储有数据查询程序,所述数据查询程序被处理器执行时实现如A1至A10任一项所述的数据查询方法的步骤。
Claims (10)
1.一种数据查询方法,其特征在于,所述数据查询方法包括以下步骤:
拦截目标终端向目标数据库发送的数据查询请求;
提取所述数据查询请求中的查询语句,并将所述查询语句转换为所述目标数据库可识别的目标查询语句;
根据所述目标查询语句从所述目标数据库中获取数据查询结果,并将所述数据查询结果发送至所述目标终端。
2.如权利要求1所述的数据查询方法,其特征在于,所述提取所述数据查询请求中的查询语句,并将所述查询语句转换为所述目标数据库可识别的目标查询语句的步骤,包括:
提取所述数据查询请求中的查询语句;
确定所述查询语句中所述目标数据库不能识别的待替换语句;
对所述待替换语句进行语法转换,以将所述查询语句转换为所述目标数据库可识别的目标查询语句。
3.如权利要求2所述的数据查询方法,其特征在于,所述对所述待替换语句进行语法转换的步骤,包括:
获取所述待替换语句在所述查询语句中的起始位置和结束位置;
获取所述待替换语句对应的目标语句;
根据所述起始位置、所述结束位置和所述目标语句对所述待替换语句进行语法转换。
4.如权利要求3所述的数据查询方法,其特征在于,所述获取所述待替换语句对应的目标语句的步骤,包括:
获取所述目标终端对应的原数据库;
获取目标数据库与所述原数据库的语句映射表;
根据所述语句映射表查找所述待替换语句对应的目标语句。
5.如权利要求1-4任一项所述的数据查询方法,其特征在于,所述拦截目标终端向目标数据库发送的数据查询请求的步骤之前,还包括:
获取目标数据库的数据库连接信息;
根据所述数据库连接信息连接目标数据库。
6.如权利要求5所述的数据查询方法,其特征在于,所述数据库连接信息包括目标数据库的数据源信息和数据驱动信息;
所述根据所述数据库连接信息连接目标数据库的步骤,包括:
根据所述数据源信息和所述数据驱动信息连接目标数据库。
7.如权利要求1-4任一项所述的数据查询方法,其特征在于,所述根据所述目标查询语句从所述目标数据库中获取数据查询结果,并将所述数据查询结果发送至所述目标终端的步骤,包括:
根据所述目标查询语句从所述目标数据库中获取数据查询结果;
获取所述目标终端对应的原数据库的数据协议;
根据所述数据协议对所述数据查询结果进行编码伪装,生成目标数据查询结果;
将所述目标数据查询结果发送至所述目标终端。
8.一种数据查询装置,其特征在于,所述数据查询装置包括:
拦截模块,用于拦截目标终端向目标数据库发送的数据查询请求;
语句转换模块,用于提取所述数据查询请求中的查询语句,并将所述查询语句转换为所述目标数据库可识别的目标查询语句;
查询模块,用于根据所述目标查询语句从所述目标数据库中获取数据查询结果,并将所述数据查询结果发送至所述目标终端。
9.一种数据查询设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据查询程序,所述数据查询程序配置为实现如权利要求1至7中任一项所述的数据查询方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有数据查询程序,所述数据查询程序被处理器执行时实现如权利要求1至7任一项所述的数据查询方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211075873.XA CN115525671A (zh) | 2022-09-02 | 2022-09-02 | 数据查询方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211075873.XA CN115525671A (zh) | 2022-09-02 | 2022-09-02 | 数据查询方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115525671A true CN115525671A (zh) | 2022-12-27 |
Family
ID=84696899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211075873.XA Pending CN115525671A (zh) | 2022-09-02 | 2022-09-02 | 数据查询方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115525671A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116578585A (zh) * | 2023-07-13 | 2023-08-11 | 北京原点数安科技有限公司 | 数据查询方法、装置、电子设备及存储介质 |
-
2022
- 2022-09-02 CN CN202211075873.XA patent/CN115525671A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116578585A (zh) * | 2023-07-13 | 2023-08-11 | 北京原点数安科技有限公司 | 数据查询方法、装置、电子设备及存储介质 |
CN116578585B (zh) * | 2023-07-13 | 2023-09-19 | 北京原点数安科技有限公司 | 数据查询方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704479A (zh) | 任务处理方法、装置、电子设备及存储介质 | |
CN113032362A (zh) | 数据血缘分析方法、装置、电子设备和存储介质 | |
US20110307521A1 (en) | System and method for storing data in a relational database | |
CN110555030B (zh) | 一种sql语句的处理方法和装置 | |
US8521748B2 (en) | System and method for managing metadata in a relational database | |
CN112860727B (zh) | 基于大数据查询引擎的数据查询方法、装置、设备及介质 | |
US9053207B2 (en) | Adaptive query expression builder for an on-demand data service | |
CN108959294B (zh) | 一种访问搜索引擎的方法和装置 | |
CN115525671A (zh) | 数据查询方法、装置、设备及存储介质 | |
CN106570095B (zh) | 一种xml数据的操作方法及设备 | |
CN113254470B (zh) | 一种数据更改方法、装置、计算机设备及存储介质 | |
CN117971598A (zh) | 日志存储方法、装置、电子设备及存储介质 | |
CN111651472A (zh) | 数据查询方法、服务器及存储介质 | |
CN111046636A (zh) | 筛选pdf文件信息的方法、装置、计算机设备及存储介质 | |
WO2023092981A1 (zh) | 流式数据处理方法、规则插件、流式数据处理模块及系统 | |
CN114020898B (zh) | 人机自动对话方法、装置、电子设备及存储介质 | |
CN114238469B (zh) | 数据提取接口开放方法、装置、计算机设备及存储介质 | |
CN115827676A (zh) | Sql子查询的执行方法、装置、终端设备以及介质 | |
CN113821211B (zh) | 命令解析方法、装置、存储介质和计算机设备 | |
CN116010461A (zh) | 数据血缘关系解析方法及装置、存储介质及电子设备 | |
US20210349910A1 (en) | Systems and methods for spark lineage data capture | |
CN113934430A (zh) | 数据检索分析方法、装置、电子设备及存储介质 | |
CN113722348A (zh) | 结构化查询语言sql语句的处理方法、装置和电子设备 | |
CN113158640A (zh) | 代码相似度的检测方法及装置、存储介质、电子设备 | |
CN110968634B (zh) | 大数据场景下基于xml描述实现利用可编程函数式进行etl转换处理的方法 |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20230901 Address after: Room 503, Building 19, No. 998 Wenyi West Road, Wuchang Street, Yuhang District, Hangzhou City, Zhejiang Province, 311100 Applicant after: Hangzhou Qiyi cloud computing Co.,Ltd. Address before: Floor 2, 3, 21 and 22, No. 89, Yunling East Road, Putuo District, Shanghai, 200333 Applicant before: Shanghai qiyelu Network Technology Co.,Ltd. |
|
TA01 | Transfer of patent application right |