[发明专利]基于数据库的重复关联检测方法、装置、设备及存储介质有效
| 申请号: | 201910967690.0 | 申请日: | 2019-10-12 |
| 公开(公告)号: | CN110909016B | 公开(公告)日: | 2023-06-16 |
| 发明(设计)人: | 林堋鑫 | 申请(专利权)人: | 中国平安财产保险股份有限公司 |
| 主分类号: | G06F16/242 | 分类号: | G06F16/242;G06F16/2455 |
| 代理公司: | 北京市京大律师事务所 11321 | 代理人: | 谢文强 |
| 地址: | 518048 广东省深圳市福田区益田路*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 数据库 重复 关联 检测 方法 装置 设备 存储 介质 | ||
1.一种基于数据库的重复关联检测方法,其特征在于,包括:
搜索数据库的代码库,所述代码库中包括所有结构化查询语言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段落进行分割,生成多个处理后的SQL语句,所述多个处理后的SQL语句包括每个SQL段落的处理后的SQL语句;
所述将所述多个处理后的SQL语句输入到预置软件中进行分析,生成至少一对关联的源表表名包括:
将多个处理后的SQL语句输入到预置软件中,生成抽象语法树;
遍历所述抽象语法树,生成多个查询块;
遍历所述查询块,并判断每个查询块中是否包含连接节点;
若所述多个查询块中包含连接节点,则提取连接节点中使用的源表表名;
根据所述源表表名生成分析结果,所述分析结果包括至少一对关联的源表表名。
2.根据权利要求1所述的基于数据库的重复关联检测方法,其特征在于,所述将多个处理后的SQL语句输入到预置软件中,生成抽象语法树包括:
将多个处理后的SQL语句中关键词统一设置为大写格式或小写格式;
通过预置软件对统一格式后的SQL语句进行语法解析,得到解析后的代码;
基于预置规则在所述解析后的代码中加入特殊词,所述特殊词用于指示特定语法;
生成抽象语法树。
3.根据权利要求1所述的基于数据库的重复关联检测方法,其特征在于,所述根据所述标注后的脚本目录在所有预置的SQL脚本中对所述两两关联的源表表名进行重复关联检测,并得到检测结果包括:
根据所述标注后的脚本目录确定脚本检测顺序;
基于所述脚本检测顺序确定第一目标脚本中两两关联的源表表名,并确定第一目标脚本中两两关联的源表表名的对数,所述第一目标脚本为所述脚本检测顺序中排序第一的脚本;
基于所述脚本检测顺序遍历其他脚本,得到检测结果,所述检测结果包括所有预置的SQL脚本中两两关联的源表表名以及两两关联的源表表名的对数。
4.根据权利要求1-3中任一所述的基于数据库的重复关联检测方法,其特征在于,所述根据所述标注后的脚本目录在所有预置的SQL脚本中对所述两两关联的源表表名进行重复关联检测,并得到检测结果之后,所述方法还包括:
根据所述检测结果确定每个关联的源表表名的关联次数;
根据所述每个关联的源表表名的关联次数按照从大到小进行排序,得到关联顺序表;
调用预置中间表对目标源表表名对进行替换,所述目标源表表名为所述关联顺序表中排序靠前的预置数目个源表表名。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国平安财产保险股份有限公司,未经中国平安财产保险股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910967690.0/1.html,转载请声明来源钻瓜专利网。





