[发明专利]一种校验Sql语句中库表字段名的方法以及计算机设备有效
申请号: | 201810116384.1 | 申请日: | 2018-02-06 |
公开(公告)号: | CN108388606B | 公开(公告)日: | 2022-01-25 |
发明(设计)人: | 林传文 | 申请(专利权)人: | 福建星瑞格软件有限公司 |
主分类号: | G06F16/2455 | 分类号: | G06F16/2455 |
代理公司: | 福州市鼓楼区京华专利事务所(普通合伙) 35212 | 代理人: | 林晓琴 |
地址: | 350000 福建省福州市鼓楼*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 校验 sql 语句 表字 段名 方法 以及 计算机 设备 | ||
本发明提供一种校验Sql语句中库表字段名的方法包括:步骤1、将数据库的元数据读入缓存;步骤2、接收请求参数,并将其中的Sql语句进行解析,得到所需校验的数据;步骤3、将所需校验的数据与元数据进行校验,得到校验结果;本发明还提供一种计算机设备;大大降低了数据库的计算压力。
技术领域
本发明涉及一种校验Sql语句中库表字段名的方法以及计算机设备。
背景技术
目前市场上存在较多的第三方数据库查询平台,第三方数据库查询平台大都是将Sql语句丢到数据库中直接进行校验以及执行,对于Sql语句中的语法以及库表字段对应信息并没有进行提前校验,若是在查询量大的时候,大量的数据库连接以及校验工作会极大的增大了数据库的压力。
发明内容
本发明要解决的技术问题,在于提供一种校验Sql语句中库表字段名的方法以及计算机设备,大大降低了数据库压力。
本发明之一是这样实现的:一种校验Sql语句中库表字段名的方法,包括:
步骤1、将数据库的元数据读入缓存;
步骤2、接收请求参数,并将其中的Sql语句进行解析,得到所需校验的数据;
步骤3、将所需校验的数据与元数据进行校验,得到校验结果。
进一步地,所述元数据包括数据库名、表名以及字段,所述数据库名、表名以及字段为统一大写字母或小写字母。
进一步地,所述步骤2进一步具体为:接收请求参数,并将Sql语句进行解析,若是解析失败,则返回错误信息;否则解析得到所需校验的数据,所述所需校验的数据包括库表名集合以及字段名集合,所述库表名集合包括数据库名以及表名,所述库表名集合以及字段名集合中的元素通过分隔符进行分隔;所述请求参数包括Sql语句以及默认选择的数据库。
进一步地,所述步骤3进一步具体为:
步骤31、从库表名集合中取出数据库名以及表名,若缓存元数据中不存在所述数据库名或表名,则返回错误信息;否则进入步骤32;
步骤32、从字段名集合中取出字段名,若缓存数据中不存在所述字段名,则返回错误信息;否则验证通过。
进一步地,所述步骤3进一步具体为:
根据分隔符对库表名集合进行分割,分割成数组;若数组长度为1,则只有表名,数据库为默认选择的数据库,若默认选择的数据库为空,则返回错误信息;若默认选择的数据库不为空,则该表名对应的数据库为默认选择的数据库;若数组长度大于等于2,则获取数组倒数第二个元素,即为数据库名;获取数据倒数第一个元素,即为表名;
根据数据库名查询缓存元数据,如果未查到,则Sql语句中数据库名错误,返回错误信息;如果查到,则根据该数据库名查询表名,如果表名不存在,则说明表名在该数据库中不存在,返回错误信息;如果表名存在,则进入下一步;
根据分隔符对字段名集合进行分割,分割成数组,如果数组长度为2,则数组第一个元素为表名,第二个元素为字段名,数据库为默认选择的数据库;如果数组长度大于等于3,则数组的倒数第三个元素为库名,倒数第二个元素为表名,倒数第一个元素为字段名;
如果字段名的值为特殊符号*,则表示获取对应表名下的所有字段,则直接校验通过;否则进行下一步;
如果表名为UNKNOWN,则获取库表名集合中的所有字段名,判断所有字段名中是否包含该字段名,如果有包含,则校验通过,如果没有包含,则校验失败,返回错误信息;
如果表名不为UNKNOWN,根据数据库名查询缓存元数据,获取到对应数据库中表的所有字段集合,判断字段集合中是否包含所述字段名,如果包含,则校验通过,否则校验失败。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于福建星瑞格软件有限公司,未经福建星瑞格软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810116384.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:基于物联网的大数据分析平台
- 下一篇:一种页面显示方法和装置