CN111651472A - 数据查询方法、服务器及存储介质 - Google Patents

数据查询方法、服务器及存储介质 Download PDF

Info

Publication number
CN111651472A
CN111651472A CN202010477736.3A CN202010477736A CN111651472A CN 111651472 A CN111651472 A CN 111651472A CN 202010477736 A CN202010477736 A CN 202010477736A CN 111651472 A CN111651472 A CN 111651472A
Authority
CN
China
Prior art keywords
sql
preset
data
data source
source table
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
Application number
CN202010477736.3A
Other languages
English (en)
Inventor
卢宗一
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Property and Casualty Insurance Company of China Ltd
Original Assignee
Ping An Property and Casualty Insurance Company of China Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ping An Property and Casualty Insurance Company of China Ltd filed Critical Ping An Property and Casualty Insurance Company of China Ltd
Priority to CN202010477736.3A priority Critical patent/CN111651472A/zh
Publication of CN111651472A publication Critical patent/CN111651472A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2452Query translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及大数据技术领域,公开了一种数据查询方法,应用于服务器,该方法包括接收客户端发出的数据查询请求,对数据查询请求进行解析得到预设标识及第一SQL,根据预设标识从数据库中找到对应的数据源表,识别述数据源表对应的预设SQL语法类型,调用编译器将第一SQL转化成第二SQL,根据第二SQL从数据库中找到具有相同预设标识的数据源表,分别从每个数据源表中抽取预设数量的表数据进行汇总得到目标数据,将汇总得到的目标数据反馈至客户端进行查看。本发明能够根据不同语法的SQL快速精准地查询到对应的目标数据。

Description

数据查询方法、服务器及存储介质
技术领域
本发明涉及大数据技术领域,尤其涉及一种数据查询方法、服务器及存储介质。
背景技术
SQL是一种用于存取数据以及查询、更新和管理关系数据库系统目前数据生态体系中存在多种语法的结构化查询语言。由于不同类型的数据源表需要对应语法的SQL才能够进行访问及导出表数据,因此当服务器接收到某种语法类型编辑成的SQL后,需要先得知该SQL要查询的表数据存储在哪个数据源表中,再将该SQL翻译成目标数据源表能够识别的SQL,这一过程要求对不同SQL的底层语言非常的熟悉,不然会导致转化之后即使没有语法错误,也可能存在逻辑上的错误,导致查询结果的错误。因此如何根据不同语法的SQL快速精准地查询到对应的目标数据成为了亟需解决的技术问题。
发明内容
本发明的主要目的在于提供一种数据查询方法、服务器及存储介质,旨在如何根据不同语法的SQL快速精准地查询到对应的目标数据的问题。
为实现上述目的,本发明提供的一种数据查询方法,应用于服务器,该方法包括:
接收步骤:接收客户端发出的数据查询请求,对所述数据查询请求进行解析得到待查询请求包含的预设标识及基于预设语言编辑的第一SQL;
转化步骤:根据所述预设标识从数据库中找到对应的数据源表,识别所述数据源表对应的预设SQL语法类型,调用预设编译器将所述第一SQL转化成根据预设SQL语法编译而成的第二SQL;
抽取步骤:根据所述第二SQL从数据库中找到具有相同预设标识的数据源表,分别从每个所述数据源表中抽取预设数量的表数据进行汇总得到目标数据;及
反馈步骤:将所述汇总得到的目标数据反馈至所述客户端。
优选地,所述根据所述第二SQL从数据库中找到具有相同预设标识的数据源表,分别从每个所述数据源表中抽取预设数量的表数据进行汇总得到目标数据包括:
采用正则表达式对所述第二SQL中的预设字符串进行替换,生成用于从所述数据源表中进行汇总得到所述目标数据的逻辑参数,将所述逻辑参数输入预设报表引擎,所述预设报表引擎根据所述逻辑参数从所有具有相同预设标识的数据源表中执行数据汇总操作,输出所述目标数据。
优选地,所述根据所述预设标识从数据库中找到对应的数据源表,识别所述数据源表对应的预设SQL语法类型,调用预设编译器将所述第一SQL转化成根据预设SQL语法编译而成的第二SQL还包括:
识别所述第一SQL对应的预设语言,从预先创建在数据库中所述预设语言与语法规则之间的映射关系表中找到对应的语法规则,根据所述语法规则判断所述第一SQL是否存在语法错误,第一反馈信息若有则生成第一反馈信息反馈至所述客户端,若无则将所述第一SQL转化成所述第二SQL,若无则将所述第一SQL转化成所述第二SQL。
优选地,所述根据所述预设标识从数据库中找到对应的数据源表,识别所述数据源表对应的预设SQL语法类型,调用预设编译器将所述第一SQL转化成根据预设SQL语法编译而成的第二SQL还包括:
判断所述数据源表是否为加密数据表,若是则调用预设的密码输入框反馈至所述客户端进行身份验证。
优选地,在所述调用预设编译器将所述第一SQL转化成根据预设SQL语法编译而成的第二SQL之后,该方法还包括:
调用explain函数获取所述第二sql的执行计划,遍历识别所述执行计划中的每一行代码,当识别到异常代码时发出第二反馈信息反馈至所述客户端。
为实现上述目的,本发明还进一步提供一种服务器,所述服务器包括存储器和处理器,所述存储器上存储有数据查询程序,所述数据查询程序被所述处理器执行时实现如下步骤:
接收步骤:接收客户端发出的数据查询请求,对所述数据查询请求进行解析得到待查询请求包含的预设标识及基于预设语言编辑的第一SQL;
转化步骤:根据所述预设标识从数据库中找到对应的数据源表,识别所述数据源表对应的预设SQL语法类型,调用预设编译器将所述第一SQL转化成根据预设SQL语法编译而成的第二SQL;
抽取步骤:根据所述第二SQL从数据库中找到具有相同预设标识的数据源表,分别从每个所述数据源表中抽取预设数量的表数据进行汇总得到目标数据;及
反馈步骤:将所述汇总得到的目标数据反馈至所述客户端。
优选地,所述根据所述第二SQL从数据库中找到具有相同预设标识的数据源表,分别从每个所述数据源表中抽取预设数量的表数据进行汇总得到目标数据包括:
采用正则表达式对所述第二SQL中的预设字符串进行替换,生成用于从所述数据源表中进行汇总得到所述目标数据的逻辑参数,将所述逻辑参数输入预设报表引擎,所述预设报表引擎根据所述逻辑参数从所有具有相同预设标识的数据源表中执行数据汇总操作,输出所述目标数据。
优选地,所述根据所述预设标识从数据库中找到对应的数据源表,识别所述数据源表对应的预设SQL语法类型,调用预设编译器将所述第一SQL转化成根据预设SQL语法编译而成的第二SQL还包括:
识别所述第一SQL对应的预设语言,从预先创建在数据库中所述预设语言与语法规则之间的映射关系表中找到对应的语法规则,根据所述语法规则判断所述第一SQL是否存在语法错误,第一反馈信息若有则生成第一反馈信息反馈至所述客户端,若无则将所述第一SQL转化成所述第二SQL,若无则将所述第一SQL转化成所述第二SQL。
优选地,所述根据所述预设标识从数据库中找到对应的数据源表,识别所述数据源表对应的预设SQL语法类型,调用预设编译器将所述第一SQL转化成根据预设SQL语法编译而成的第二SQL还包括:
识别所述第一SQL对应的预设语言,从预先创建在数据库中所述预设语言与语法规则之间的映射关系表中找到对应的语法规则,根据所述语法规则判断所述第一SQL是否存在语法错误,第一反馈信息若有则生成第一反馈信息反馈至所述客户端,若无则将所述第一SQL转化成所述第二SQL。
优选地,所述根据所述预设标识从数据库中找到对应的数据源表,识别所述数据源表对应的预设SQL语法类型,调用预设编译器将所述第一SQL转化成根据预设SQL语法编译而成的第二SQL还包括:
判断所述数据源表是否为加密数据表,若是则调用预设的密码输入框反馈至所述客户端进行身份验证。
为实现上述目的,本发明进一步提供一种计算机可读存储介质,所述计算机可读存储介质上存储有数据查询程序,所述数据查询程序可被一个或者多个处理器执行,以实现如上所述的数据查询方法的步骤。
本发明提出的数据查询方法、服务器及存储介质,通过接收客户端发出的数据查询请求,对数据查询请求进行解析得到预设标识及第一SQL,根据预设标识从数据库中找到对应的数据源表,识别述数据源表对应的预设SQL语法类型,调用编译器将第一SQL转化成第二SQL,根据第二SQL从数据库中找到具有相同预设标识的数据源表,分别从每个数据源表中抽取预设数量的表数据进行汇总得到目标数据,将汇总得到的目标数据反馈至客户端进行查看。本发明能够根据不同语法的SQL快速精准地查询到对应的目标数据。
附图说明
图1为本发明服务器较佳实施例的应用环境图;
图2为图1中数据查询程序较佳实施例的程序模块示意图;
图3为本发明数据查询方法较佳实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参附图做进一步说明。
具体实施方式
为了使本发明的目的、技术本实施例及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术本实施例可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术本实施例的结合出现相互矛盾或无法实现时应当认为这种技术本实施例的结合不存在,也不在本发明要求的保护范围之内。
本发明提供一种服务器1。
所述服务器1包括,但不仅限于,存储器11、处理器12及网络接口13。
其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是服务器1的内部存储单元,例如该服务器1的硬盘。存储器11在另一些实施例中也可以是服务器1的外部存储设备,例如该服务器1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
进一步地,存储器11还可以既包括服务器1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于服务器1的应用软件及各类数据,例如数据查询程序10的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行数据查询程序10等。
网络接口13可选的可以包括标准的有线接口、无线接口(如WI-FI接口),通常用于在该服务器与其他电子设备之间建立通信连接。
客户端可以是桌上型计算机、笔记本、平板电脑、手机等。
网络可以为互联网、云网络、无线保真(Wi-Fi)网络、个人网(PAN)、局域网(LAN)和/或城域网(MAN)。网络环境中的各种设备可以被配置为根据各种有线和无线通信协议连接到通信网络。这样的有线和无线通信协议的例子可以包括但不限于以下中的至少一个:传输控制协议和互联网协议(TCP/IP)、用户数据报协议(UDP)、超文本传输协议(HTTP)、文件传输协议(FTP)、ZigBee、EDGE、IEEE 802.11、光保真(Li-Fi)、802.16、IEEE 802.11s、IEEE 802.11g、多跳通信、无线接入点(AP)、设备对设备通信、蜂窝通信协议和/或蓝牙(BlueTooth)通信协议或其组合。
可选地,该服务器1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以称为显示屏或显示单元,用于显示在服务器1中处理的信息以及用于显示可视化的用户界面。
图1仅示出了具有组件11-13以及数据查询程序10的服务器1,本领域技术人员可以理解的是,图1示出的结构并不构成对服务器1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
在本实施例中,图1的数据查询程序10被处理器12执行时,实现以下步骤:
接收步骤:接收客户端发出的数据查询请求,对所述数据查询请求进行解析得到待查询请求包含的预设标识及基于预设语言编辑的第一SQL;
转化步骤:根据所述预设标识从数据库中找到对应的数据源表,识别所述数据源表对应的预设SQL语法类型,调用预设编译器将所述第一SQL转化成根据预设SQL语法编译而成的第二SQL;
抽取步骤:根据所述第二SQL从数据库中找到具有相同预设标识的数据源表,分别从每个所述数据源表中抽取预设数量的表数据进行汇总得到目标数据;及
反馈步骤:将所述汇总得到的目标数据反馈至所述客户端。
在另一实施例中,该方法还包括:
采用正则表达式对所述第二SQL中的预设字符串进行替换,生成用于从所述数据源表中进行汇总得到所述目标数据的逻辑参数,将所述逻辑参数输入预设报表引擎,所述预设报表引擎根据所述逻辑参数从所有具有相同预设标识的数据源表中执行数据汇总操作,输出所述目标数据。
在另一实施例中,该方法还包括:
识别所述第一SQL对应的预设语言,从预先创建在数据库中所述预设语言与语法规则之间的映射关系表中找到对应的语法规则,根据所述语法规则判断所述第一SQL是否存在语法错误,第一反馈信息若有则生成第一反馈信息反馈至所述客户端,若无则将所述第一SQL转化成所述第二SQL。
在另一实施例中,该方法还包括:
所述根据所述预设标识从数据库中找到对应的数据源表,识别所述数据源表对应的预设SQL语法类型,调用预设编译器将所述第一SQL转化成根据预设SQL语法编译而成的第二SQL还包括:
判断所述数据源表是否为加密数据表,若是则调用预设的密码输入框反馈至所述客户端进行身份验证。
在另一实施例中,该方法还包括:
调用explain函数获取所述第二sql的执行计划,遍历识别所述执行计划中的每一行代码,当识别到异常代码时发出第二反馈信息反馈至所述客户端。
关于上述步骤的详细介绍,请参照下述图2关于数据查询程序10实施例的程序模块示意图及图3关于数据查询方法实施例的方法流程示意图的说明。
参照图2所示,为图1中数据查询程序10实施例的程序模块示意图。数据查询程序10被分割为多个模块,该多个模块存储于存储器11中,并由处理器12执行,以完成本发明。本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段。
在本实施例中,所述数据查询程序10包括接收模块110、转化模块120、抽取模块130及反馈模块140。
接收模块110,用于接收客户端发出的数据查询请求,对所述数据查询请求进行解析得到待查询请求包含的预设标识及基于预设语言编辑的第一SQL。
在本实施例中,服务器1通过接收客户端(用户对应的客户端)发出的数据查询请求,并对其进行解析得到待查询请求包含的预设标识及第一SQL。
其中,所述预设标识可采用客户id,用于后续从数据库中找到与客户端对应的数据源表。
所述第一SQL是基于预设语言编辑的,例如hql、mySQL及presto等,用于存取数据以及查询、更新和管理关系数据库系统。
SQL(Structured Query Language)是结构化查询语言的简称,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,同时也是一种综合的、通用的、功能极强的关系数据库语言。其特点是:
1、数据描述、操纵、控制等功能一体化。
2、两种使用方式,统一的语法结构。SQL有两种使用方式。一是联机交互使用,这种方式下的SQL实际上是作为自含型语言使用的。另一种方式是嵌入到某种高级程序设计语言(如C语言等)中去使用。前一种方式适合于非计算机专业人员使用,后一种方式适合于专业计算机人员使用。尽管使用方式不向,但所用语言的语法结构基本上是一致的。
3、高度非过程化。SQL是一种第四代语言(4GL),用户只需要提出“干什么”,无须具体指明“怎么干”,像存取路径选择和具体处理操作等均由系统自动完成。
4、语言简洁,易学易用。尽管SQL的功能很强,但语言十分简洁,核心功能只用了9个动词。SQL的语法接近英语口语,所以,用户很容易学习和使用。
转化模块120,用于根据所述预设标识从数据库中找到对应的数据源表,识别所述数据源表对应的预设SQL语法类型,调用预设编译器将所述第一SQ L转化成根据预设SQL语法编译而成的第二SQL。
为了能够知道客户端需要查询的数据储存在哪个数据源表中,并且由于不同类型的数据源表需要对应语法的SQL才能够进行访问及导出表数据。因此,在本实施例中,需要根据客户端发出的数据查询请求中的预设标识(例如id)从数据库中找到对应的数据源表,并通过识别找到的数据源表对应的预设SQL语法类型,例如客户端发出的数据查询请求中包含的第一SQL是采用hive语法进行编辑得到的,而第一SQL最终要获取的表数据存储的数据源表只能通过presto语法标记的SQL进行访问。因此,当识别到数据源表对应的预设SQL语法类型(例如presto)后,调用第三方的预设编译器将第一SQL转化成根据预设SQL语法(例如presto)编译而成的第二SQL。从而能够顺利地获取客户端想要的表数据。
在另一实施例中,所述转化模块120还用于:
识别所述第一SQL对应的预设语言,从预先创建在数据库中所述预设语言与语法规则之间的映射关系表中找到对应的语法规则,根据所述语法规则判断所述第一SQL是否存在语法错误,第一反馈信息若有则生成第一反馈信息反馈至所述客户端,若无则将所述第一SQL转化成所述第二SQL。
为了防止由于客户端发出的数据查询请求中包含的第一SQL存在语法错误,导致无法查询到对应的目标数据,因此,在本实施例中,需要对第一SQ L进行语法检查,通过识别第一SQL对应的预设语言,从预先创建在数据库中预设语言与语法规则之间的映射关系表中找到对应的语法规则,根据语法规则判断第一SQL在编辑上是否存在语法错误,若有则生成第一反馈信息反馈至客户端告知用户,其中所述第一反馈信息可包括第一SQL存在语法错误的地方,若无则将第一SQL转化成第二SQL。
在另一实施例中,所述转化模块120还用于:
判断所述数据源表是否为加密数据表,若是则调用预设的密码输入框反馈至所述客户端进行身份验证。
由于有的数据源表中存储的表数据为敏感数据,需要具有一定权限的人才能够进行访问和导出,因此为了防止该类型的表数据被随意访问,需要对存储有敏感数据的数据源表进行加密操作,只有知道密码的人才能够对该数据源表中的表数据进行访问和导出。在本实施例中,在根据预设标识从数据库中找到对应的数据源表后,需要先判断该数据源表是否为加密数据表,若是则调用预设的密码输入框反馈至客户端进行身份验证,只有验证通过了才能够进行后续操作,例如将第一SQL转化成第二SQL,及访问对应的数据源表等。
在另一实施例中,所述转化模块120还用于:
调用explain函数获取所述第二sql的执行计划,遍历识别所述执行计划中的每一行代码,当识别到异常代码时发出第二反馈信息反馈至所述客户端。
explain函数用于获取第二sql的执行计划,并对执行计划进行分析判断第二sql的语法是否存在异常,若存在则发出第二反馈信息反馈至客户端。第二客户端包括存在异常的代码位置及异常原因。
在另一实施例中,所述转化模块120还用于:
监测所述密码输入框的验证结果及次数,若所述验证结果为错误,且所述验证结果为错误对应的次数超过预设阈值,则拒绝所述客户端的数据查询请求。
为了避免存在多次输入密码后侥幸验证成功的情况,因此,在本实施例中,通过监测密码输入框的验证结果及次数,若验证结果为错误,且验证结果为错误对应的次数超过预设阈值(例如5次),则拒绝客户端的数据查询请求。
抽取模块130,用于根据所述第二SQL从数据库中找到具有相同预设标识的数据源表,分别从每个所述数据源表中抽取预设数量的表数据进行汇总得到目标数据。
在本实施例中,在将第一SQL转化成与要查询的数据源表对应的第二SQL后,从数据库中找到具有相同预设标识(例如id)的数据源表,分别从每个数据源表中抽取预设数量的表数据进行汇总得到客户端需要的目标数据。
具体地,通过采用正则表达式对所述第二SQL中的预设字符串进行替换,生成用于从数据源表中进行汇总得到目标数据的逻辑参数,将逻辑参数输入预设报表引擎,预设报表引擎根据逻辑参数从所有具有相同预设标识的数据源表中执行数据汇总操作,输出目标数据。
其中,正则表达式可以作为对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
通过正则表达式可以从数据源表中获取想要的特定部分,因此可以采用正则表达式对SQL语句中的预设字符串进行过滤替换,生成一个能够述数据源表中汇总得到目标数据的逻辑参数,例如第二SQL中采用正则表达式为“s um(case when正则匹配=平安thenamount else 0end)”,当数据源表中的某个字段等于平安的时候,就对包含平安的字段进行sum amount(总计)。
反馈模块140,用于将所述汇总得到的目标数据反馈至所述客户端。
在本实施例中,利用上述操作最终得到目标数据后,服务器1将该目标数据反馈至客户端进行查看。
此外,本发明还提供一种数据查询方法。参照图3所示,为本发明数据查询方法的实施例的方法流程示意图。服务器1的处理器12执行存储器11中存储的数据查询程序10时实现数据查询方法的如下步骤:
S110,接收客户端发出的数据查询请求,对所述数据查询请求进行解析得到待查询请求包含的预设标识及基于预设语言编辑的第一SQL。
在本实施例中,服务器1通过接收客户端(用户对应的客户端)发出的数据查询请求,并对其进行解析得到待查询请求包含的预设标识及第一SQL。
其中,所述预设标识可采用客户id,用于后续从数据库中找到与客户端对应的数据源表。
所述第一SQL是基于预设语言编辑的,例如hql、mySQL及presto等,用于存取数据以及查询、更新和管理关系数据库系统。
SQL(Structured Query Language)是结构化查询语言的简称,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,同时也是一种综合的、通用的、功能极强的关系数据库语言。其特点是:
1、数据描述、操纵、控制等功能一体化。
2、两种使用方式,统一的语法结构。SQL有两种使用方式。一是联机交互使用,这种方式下的SQL实际上是作为自含型语言使用的。另一种方式是嵌入到某种高级程序设计语言(如C语言等)中去使用。前一种方式适合于非计算机专业人员使用,后一种方式适合于专业计算机人员使用。尽管使用方式不向,但所用语言的语法结构基本上是一致的。
3、高度非过程化。SQL是一种第四代语言(4GL),用户只需要提出“干什么”,无须具体指明“怎么干”,像存取路径选择和具体处理操作等均由系统自动完成。
4、语言简洁,易学易用。尽管SQL的功能很强,但语言十分简洁,核心功能只用了9个动词。SQL的语法接近英语口语,所以,用户很容易学习和使用。
S120,根据所述预设标识从数据库中找到对应的数据源表,识别所述数据源表对应的预设SQL语法类型,调用预设编译器将所述第一SQL转化成根据预设SQL语法编译而成的第二SQL。
为了能够知道客户端需要查询的数据储存在哪个数据源表中,并且由于不同类型的数据源表需要对应语法的SQL才能够进行访问及导出表数据。因此,在本实施例中,需要根据客户端发出的数据查询请求中的预设标识(例如id)从数据库中找到对应的数据源表,并通过识别找到的数据源表对应的预设SQL语法类型,例如客户端发出的数据查询请求中包含的第一SQL是采用hive语法进行编辑得到的,而第一SQL最终要获取的表数据存储的数据源表只能通过presto语法标记的SQL进行访问。因此,当识别到数据源表对应的预设SQL语法类型(例如presto)后,调用第三方的预设编译器将第一SQL转化成根据预设SQL语法(例如presto)编译而成的第二SQL。从而能够顺利地获取客户端想要的表数据。
在另一实施例中,该方法还包括以下步骤:
识别所述第一SQL对应的预设语言,从预先创建在数据库中所述预设语言与语法规则之间的映射关系表中找到对应的语法规则,根据所述语法规则判断所述第一SQL是否存在语法错误,第一反馈信息若有则生成第一反馈信息反馈至所述客户端,若无则将所述第一SQL转化成所述第二SQL。
为了防止由于客户端发出的数据查询请求中包含的第一SQL存在语法错误,导致无法查询到对应的目标数据,因此,在本实施例中,需要对第一SQ L进行语法检查,通过识别第一SQL对应的预设语言,从预先创建在数据库中预设语言与语法规则之间的映射关系表中找到对应的语法规则,根据语法规则判断第一SQL在编辑上是否存在语法错误,若有则生成第一反馈信息反馈至客户端告知用户,其中所述第一反馈信息可包括第一SQL存在语法错误的地方。
在另一实施例中,该方法还包括以下步骤:
判断所述数据源表是否为加密数据表,若是则调用预设的密码输入框反馈至所述客户端进行身份验证。
由于有的数据源表中存储的表数据为敏感数据,需要具有一定权限的人才能够进行访问和导出,因此为了防止该类型的表数据被随意访问,需要对存储有敏感数据的数据源表进行加密操作,只有知道密码的人才能够对该数据源表中的表数据进行访问和导出。在本实施例中,在根据预设标识从数据库中找到对应的数据源表后,需要先判断该数据源表是否为加密数据表,若是则调用预设的密码输入框反馈至客户端进行身份验证,只有验证通过了才能够进行后续操作,例如将第一SQL转化成第二SQL,及访问对应的数据源表等。
在另一实施例中,该方法还包括以下步骤:
调用explain函数获取所述第二sql的执行计划,遍历识别所述执行计划中的每一行代码,当识别到异常代码时发出第二反馈信息反馈至所述客户端。
explain函数用于获取第二sql的执行计划,并对执行计划进行分析判断第二sql的语法是否存在异常,若存在则发出第二反馈信息反馈至客户端。第二客户端包括存在异常的代码位置及异常原因。
在另一实施例中,该方法还包括以下步骤:
监测所述密码输入框的验证结果及次数,若所述验证结果为错误,且所述验证结果为错误对应的次数超过预设阈值,则拒绝所述客户端的数据查询请求。
为了避免存在多次输入密码后侥幸验证成功的情况,因此,在本实施例中,通过监测密码输入框的验证结果及次数,若验证结果为错误,且验证结果为错误对应的次数超过预设阈值(例如5次),则拒绝客户端的数据查询请求。
S130,根据所述第二SQL从数据库中找到具有相同预设标识的数据源表,分别从每个所述数据源表中抽取预设数量的表数据进行汇总得到目标数据。
在本实施例中,在将第一SQL转化成与要查询的数据源表对应的第二SQL后,从数据库中找到具有相同预设标识(例如id)的数据源表,分别从每个数据源表中抽取预设数量的表数据进行汇总得到客户端需要的目标数据。
具体地,通过采用正则表达式对所述第二SQL中的预设字符串进行替换,生成用于从数据源表中进行汇总得到目标数据的逻辑参数,将逻辑参数输入预设报表引擎,预设报表引擎根据逻辑参数从所有具有相同预设标识的数据源表中执行数据汇总操作,输出目标数据。
其中,正则表达式可以作为对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
通过正则表达式可以从数据源表中获取想要的特定部分,因此可以采用正则表达式对SQL语句中的预设字符串进行过滤替换,生成一个能够述数据源表中汇总得到目标数据的逻辑参数,例如第二SQL中采用正则表达式为“s um(case when正则匹配=平安thenamount else 0end)”,当数据源表中的某个字段等于平安的时候,就对包含平安的字段进行sum amount(总计)。
S140,将所述汇总得到的目标数据反馈至所述客户端。
在本实施例中,利用上述操作最终得到目标数据后,服务器1将该目标数据反馈至客户端进行查看。
此外,本发明实施例还提出一种计算机可读存储介质,计算机可读存储介质可以是硬盘、多媒体卡、SD卡、闪存卡、SMC、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器等中的任意一种或者几种的任意组合。计算机可读存储介质中包括数据查询程序10,本发明之计算机可读存储介质的具体实施方式与上述数据查询方法以及服务器1的具体实施方式大致相同,在此不再赘述。
需要说明的是,上述本发明实施例序日仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
上述本发明实施例序日仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术本实施例本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种数据查询方法,应用于服务器,其特征在于,该方法包括:
接收步骤:接收客户端发出的数据查询请求,对所述数据查询请求进行解析得到待查询请求包含的预设标识及基于预设语言编辑的第一SQL;
转化步骤:根据所述预设标识从数据库中找到对应的数据源表,识别所述数据源表对应的预设SQL语法类型,调用预设编译器将所述第一SQL转化成根据预设SQL语法编译而成的第二SQL;
抽取步骤:根据所述第二SQL从数据库中找到具有相同预设标识的数据源表,分别从每个所述数据源表中抽取预设数量的表数据进行汇总得到目标数据;及
反馈步骤:将所述汇总得到的目标数据反馈至所述客户端。
2.如权利要求1所述的数据查询方法,其特征在于,所述根据所述第二SQL从数据库中找到具有相同预设标识的数据源表,分别从每个所述数据源表中抽取预设数量的表数据进行汇总得到目标数据包括:
采用正则表达式对所述第二SQL中的预设字符串进行替换,生成用于从所述数据源表中进行汇总得到所述目标数据的逻辑参数,将所述逻辑参数输入预设报表引擎,所述预设报表引擎根据所述逻辑参数从所有具有相同预设标识的数据源表中执行数据汇总操作,输出所述目标数据。
3.如权利要求1所述的数据查询方法,其特征在于,所述根据所述预设标识从数据库中找到对应的数据源表,识别所述数据源表对应的预设SQL语法类型,调用预设编译器将所述第一SQL转化成根据预设SQL语法编译而成的第二SQL还包括:
识别所述第一SQL对应的预设语言,从预先创建在数据库中所述预设语言与语法规则之间的映射关系表中找到对应的语法规则,根据所述语法规则判断所述第一SQL是否存在语法错误,第一反馈信息若有则生成第一反馈信息反馈至所述客户端,若无则将所述第一SQL转化成所述第二SQL。
4.如权利要求1所述的数据查询方法,其特征在于,在所述根据所述预设标识从数据库中找到对应的数据源表之后,该方法还包括:
判断所述数据源表是否为加密数据表,若是则调用预设的密码输入框反馈至所述客户端进行身份验证。
5.如权利要求1所述的数据查询方法,其特征在于,在所述调用预设编译器将所述第一SQL转化成根据预设SQL语法编译而成的第二SQL之后,该方法还包括:
调用explain函数获取所述第二sql的执行计划,遍历识别所述执行计划中的每一行代码,当识别到异常代码时发出第二反馈信息反馈至所述客户端。
6.一种服务器,其特征在于,所述服务器包括存储器和处理器,所述存储器上存储有数据查询程序,所述数据查询程序被所述处理器执行时实现如下步骤:
接收步骤:接收客户端发出的数据查询请求,对所述数据查询请求进行解析得到待查询请求包含的预设标识及基于预设语言编辑的第一SQL;
转化步骤:根据所述预设标识从数据库中找到对应的数据源表,识别所述数据源表对应的预设SQL语法类型,调用预设编译器将所述第一SQL转化成根据预设SQL语法编译而成的第二SQL;
抽取步骤:根据所述第二SQL从数据库中找到具有相同预设标识的数据源表,分别从每个所述数据源表中抽取预设数量的表数据进行汇总得到目标数据;及
反馈步骤:将所述汇总得到的目标数据反馈至所述客户端。
7.如权利要求6所述的服务器,其特征在于,所述根据所述第二SQL从数据库中找到具有相同预设标识的数据源表,分别从每个所述数据源表中抽取预设数量的表数据进行汇总得到目标数据包括:
采用正则表达式对所述第二SQL中的预设字符串进行替换,生成用于从所述数据源表中进行汇总得到所述目标数据的逻辑参数,将所述逻辑参数输入预设报表引擎,所述预设报表引擎根据所述逻辑参数从所有具有相同预设标识的数据源表中执行数据汇总操作,输出所述目标数据。
8.如权利要求6所述的服务器,其特征在于,所述根据所述预设标识从数据库中找到对应的数据源表,识别所述数据源表对应的预设SQL语法类型,调用预设编译器将所述第一SQL转化成根据预设SQL语法编译而成的第二SQL还包括:
识别所述第一SQL对应的预设语言,从预先创建在数据库中所述预设语言与语法规则之间的映射关系表中找到对应的语法规则,根据所述语法规则判断所述第一SQL是否存在语法错误,第一反馈信息若有则生成第一反馈信息反馈至所述客户端,若无则将所述第一SQL转化成所述第二SQL,若无则将所述第一SQL转化成所述第二SQL。
9.如权利要求6所述的服务器,其特征在于,所述根据所述预设标识从数据库中找到对应的数据源表,识别所述数据源表对应的预设SQL语法类型,调用预设编译器将所述第一SQL转化成根据预设SQL语法编译而成的第二SQL还包括:
判断所述数据源表是否为加密数据表,若是则调用预设的密码输入框反馈至所述客户端进行身份验证。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有数据查询程序,所述数据查询程序可被一个或者多个处理器执行,以实现如权利要求1-5中任一项所述的数据查询方法的步骤。
CN202010477736.3A 2020-05-29 2020-05-29 数据查询方法、服务器及存储介质 Pending CN111651472A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010477736.3A CN111651472A (zh) 2020-05-29 2020-05-29 数据查询方法、服务器及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010477736.3A CN111651472A (zh) 2020-05-29 2020-05-29 数据查询方法、服务器及存储介质

Publications (1)

Publication Number Publication Date
CN111651472A true CN111651472A (zh) 2020-09-11

Family

ID=72352693

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010477736.3A Pending CN111651472A (zh) 2020-05-29 2020-05-29 数据查询方法、服务器及存储介质

Country Status (1)

Country Link
CN (1) CN111651472A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113111356A (zh) * 2021-03-09 2021-07-13 深圳市教育信息技术中心(深圳市教育装备中心) 数据加密方法、装置、设备和介质
CN113111088A (zh) * 2021-04-13 2021-07-13 北京沃东天骏信息技术有限公司 数据抽取方法、装置、计算机设备和存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113111356A (zh) * 2021-03-09 2021-07-13 深圳市教育信息技术中心(深圳市教育装备中心) 数据加密方法、装置、设备和介质
CN113111088A (zh) * 2021-04-13 2021-07-13 北京沃东天骏信息技术有限公司 数据抽取方法、装置、计算机设备和存储介质

Similar Documents

Publication Publication Date Title
WO2018000998A1 (zh) 界面生成方法、装置和系统
US11308031B2 (en) Resolving in-memory foreign keys in transmitted data packets from single-parent hierarchies
WO2020015166A1 (zh) 图表组件的创建方法、装置及计算机可读存储介质
CN110610196B (zh) 脱敏方法、系统、计算机设备和计算机可读存储介质
CN110457363B (zh) 基于分布式数据库的查询方法、装置及存储介质
CN111414407A (zh) 数据库的数据查询方法、装置、计算机设备及存储介质
CN108090351B (zh) 用于处理请求消息的方法和装置
CN110209766B (zh) 数据展示方法、电子装置及存储介质
WO2020015191A1 (zh) 业务规则的发布管理方法、电子装置及可读存储介质
CN106406844B (zh) 实现通讯交互平台公众号菜单的方法和装置
CN110377651B (zh) 批量数据的处理方法、装置、设备及存储介质
CN109062925B (zh) 自动生成insert语句的方法、装置、计算机设备及存储介质
CN111651468A (zh) 基于sql解析的数据更新方法、装置、电子设备及存储介质
CN110457346B (zh) 数据查询方法、装置及计算机可读存储介质
CN111061464B (zh) 解析代码生成方法、装置、设备及存储介质
CN111651472A (zh) 数据查询方法、服务器及存储介质
CN112597020A (zh) 接口测试方法、装置、计算机设备及存储介质
CN111274263A (zh) 可视化数据库变更语句生成方法、装置及存储介质
CN110688354B (zh) 数据库中慢日志文件的分析方法、终端以及存储介质
CN111767262A (zh) 日志展示方法、装置、设备及存储介质
US9665574B1 (en) Automatically scraping and adding contact information
CN110688315A (zh) 接口代码检测报告生成方法、电子装置及存储介质
CN111400289B (zh) 智能用户分类方法、服务器及存储介质
CN110866007B (zh) 大数据应用和表的信息管理方法、系统和计算机设备
CN110188432B (zh) 系统架构的验证方法、电子设备及计算机可读存储介质

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