[發(fā)明專利]基于Flex和Bison的SQL語(yǔ)法樹解析方法在審
| 申請(qǐng)?zhí)枺?/td> | 202110312632.1 | 申請(qǐng)日: | 2021-03-24 |
| 公開(公告)號(hào): | CN113032366A | 公開(公告)日: | 2021-06-25 |
| 發(fā)明(設(shè)計(jì))人: | 王斌;趙智博;曲彥秋;楊曉春 | 申請(qǐng)(專利權(quán))人: | 東北大學(xué) |
| 主分類號(hào): | G06F16/21 | 分類號(hào): | G06F16/21;G06F16/22;G06F16/242;G06F40/211;G06F40/253 |
| 代理公司: | 沈陽(yáng)東大知識(shí)產(chǎn)權(quán)代理有限公司 21109 | 代理人: | 李在川 |
| 地址: | 110819 遼寧*** | 國(guó)省代碼: | 遼寧;21 |
| 權(quán)利要求書: | 查看更多 | 說(shuō)明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 基于 flex bison sql 語(yǔ)法 解析 方法 | ||
1.一種基于Flex和Bison的SQL語(yǔ)法樹解析方法,其特征在于,包括:
步驟1:獲取數(shù)據(jù)庫(kù)歷史查詢文件,收集指定數(shù)據(jù)庫(kù)實(shí)例對(duì)應(yīng)的SQL語(yǔ)句,所述SQL語(yǔ)句包括insert語(yǔ)句、delete語(yǔ)句、update語(yǔ)句以及select語(yǔ)句;
步驟2:對(duì)每條SQL語(yǔ)句進(jìn)行詞法分析,根據(jù)構(gòu)詞規(guī)則將SQL語(yǔ)句分割為相應(yīng)的記號(hào);
步驟3:將詞法分析處理得到的記號(hào)序列進(jìn)行語(yǔ)法分析,根據(jù)SQL語(yǔ)法規(guī)則將記號(hào)序列轉(zhuǎn)化為語(yǔ)法樹形式;
步驟4:將語(yǔ)法樹結(jié)構(gòu)轉(zhuǎn)化為JSON格式;
步驟5:重復(fù)執(zhí)行步驟2至步驟4,直到處理完所有的SQL語(yǔ)句。
2.根據(jù)權(quán)利要求1所述的一種基于Flex和Bison的SQL語(yǔ)法樹解析方法,其特征在于,所述步驟1包括:
步驟1.1:開啟關(guān)系型數(shù)據(jù)庫(kù)中的歷史查詢?nèi)罩竟δ埽占痲uery workload信息;
步驟1.2:讀取數(shù)據(jù)庫(kù)歷史查詢?nèi)罩疚募ㄟ^(guò)ID跟蹤用戶執(zhí)行的操作,篩選出指定數(shù)據(jù)庫(kù)實(shí)例的查詢?nèi)罩荆?/p>
步驟1.3:排除掉日志中的時(shí)間信息、ID信息以及命令類型信息,得到指定數(shù)據(jù)庫(kù)實(shí)例的日志中包含的SQL語(yǔ)句,所述SQL語(yǔ)句包括insert語(yǔ)句、delete語(yǔ)句、update語(yǔ)句以及select語(yǔ)句。
3.根據(jù)權(quán)利要求1所述的一種基于Flex和Bison的SQL語(yǔ)法樹解析方法,其特征在于,所述步驟2包括:
步驟2.1:根據(jù)SQL語(yǔ)句中的關(guān)鍵字、數(shù)據(jù)庫(kù)命名規(guī)則以及變量類型,制定正則表達(dá)式進(jìn)行每個(gè)詞的匹配并轉(zhuǎn)換為相應(yīng)的記號(hào);
步驟2.2:利用Flex軟件將正則表達(dá)式以及相應(yīng)記號(hào)的轉(zhuǎn)換動(dòng)作轉(zhuǎn)化為C語(yǔ)言形式;
步驟2.3:調(diào)用C語(yǔ)言代碼文件中的yylex()函數(shù)讀取SQL語(yǔ)句進(jìn)行構(gòu)詞規(guī)則匹配,判斷每條SQL語(yǔ)句是否存在詞法問(wèn)題;
步驟2.4:對(duì)于不存在詞法問(wèn)題的SQL語(yǔ)句分割為相應(yīng)的記號(hào),得到每條SQL語(yǔ)句對(duì)應(yīng)的記號(hào)序列,對(duì)于存在詞法問(wèn)題的SQL語(yǔ)句則直接刪除。
4.根據(jù)權(quán)利要求1所述的一種基于Flex和Bison的SQL語(yǔ)法樹解析方法,其特征在于,所述步驟3包括:
步驟3.1:設(shè)計(jì)SQL語(yǔ)法樹節(jié)點(diǎn)的結(jié)構(gòu)體類型,其中包含節(jié)點(diǎn)的類型、節(jié)點(diǎn)存儲(chǔ)的數(shù)值、該節(jié)點(diǎn)的兄弟節(jié)點(diǎn)以及子節(jié)點(diǎn);
步驟3.2:根據(jù)SQL語(yǔ)法設(shè)計(jì)BNF文法;
步驟3.3:利用Bison軟件將編寫好的BNF文法轉(zhuǎn)化為C語(yǔ)言形式,讀取步驟2生成的記號(hào)序列進(jìn)行BNF文法匹配,得到最終的SQL語(yǔ)法樹。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于東北大學(xué),未經(jīng)東北大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110312632.1/1.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 一種SQL注入檢測(cè)方法及裝置
- SQL檢查方法與裝置
- 一種結(jié)構(gòu)化查詢語(yǔ)言性能優(yōu)化方法及系統(tǒng)
- 使用SQL實(shí)現(xiàn)MDX查詢效果的方法和裝置
- SQL語(yǔ)句處理方法和系統(tǒng)
- 一種SQL審核方法與系統(tǒng)
- 異常SQL語(yǔ)句檢測(cè)方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- SQL代碼信息顯示方法、裝置、計(jì)算機(jī)裝置及存儲(chǔ)介質(zhì)
- PaaS平臺(tái)中SQL執(zhí)行引擎的適配方法及裝置
- 一種SQL預(yù)執(zhí)行優(yōu)化的方法、裝置、設(shè)備及可讀介質(zhì)





