[發明專利]基于數據庫的重復關聯檢測方法、裝置、設備及存儲介質有效
| 申請號: | 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.szxzyx.cn/pat/books/201910967690.0/1.html,轉載請聲明來源鉆瓜專利網。





