[發(fā)明專利]一種SQL格式化的方法在審
| 申請?zhí)枺?/td> | 201811484271.3 | 申請日: | 2018-12-06 |
| 公開(公告)號: | CN109597624A | 公開(公告)日: | 2019-04-09 |
| 發(fā)明(設(shè)計)人: | 魏明偉 | 申請(專利權(quán))人: | 魏明偉 |
| 主分類號: | G06F8/41 | 分類號: | G06F8/41;G06F16/242 |
| 代理公司: | 北京天盾知識產(chǎn)權(quán)代理有限公司 11421 | 代理人: | 張彩珍 |
| 地址: | 300170 天*** | 國省代碼: | 天津;12 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 格式化 語法分析過程 編碼效率 詞法分析 通用性強 重新定義 注釋位置 語法樹 自定義 遍歷 虛擬 場景 輸出 開發(fā) | ||
本發(fā)明涉及一種SQL格式化的方法,該方法包括:A、詞法分析提取注釋;B、自定義語法分析過程;C、重新定義ANTLR的createToken方法;D、遍歷虛擬語法樹,確定注釋位置;E、格式化輸出。本發(fā)明通用性強,適用于SQL體系的任意一種具體場景,比如hive sql,mysql等,極大提高了SQL開發(fā)人員的編碼效率和質(zhì)量。
技術(shù)領(lǐng)域
本發(fā)明涉及計算機程序設(shè)計工具的技術(shù)領(lǐng)域,具體涉及一種SQL格式化的方法。
背景技術(shù)
SQL語言的開發(fā)人員在編寫SQL程序的時候,通常會按照特定的編程規(guī)范來編寫。但是手工編寫過程中容易產(chǎn)生不規(guī)范的問題,或者一些初級編碼人員或業(yè)余編碼人員編寫的SQL語言會存在很多不符合規(guī)范的情況。為了使代碼更容易讀懂,不同層次的人員都能夠產(chǎn)出完全符合規(guī)范的SQL程序。SQL自動格式化的系統(tǒng)性工具成為了開發(fā)過程中的必要工具。該工具提供了一種自動化的方法將SQL語言進行格式化,將規(guī)范自動應(yīng)用于SQL語句,節(jié)約了開發(fā)人員手工格式化SQL的時間,提升開發(fā)的效率和質(zhì)量。
現(xiàn)有的相關(guān)工具:1、ApexSQL Refactor SQL formatter;2、SQL Pretty Printer;3、Druid。第一個工具和第二個工具都是運行在Windows平臺,對平臺兼容性差,第一個工具和第二個工具都屬于商業(yè)軟件,內(nèi)部構(gòu)造對外不公開。第三個工具提供SQL格式化的方法,是自己實現(xiàn)了SQL語言的語法解析,遍歷虛擬語法樹輸出SQL格式化文本。但是注釋會被忽略,而且個性化的格式化規(guī)范支持不好,另外有些方言的語法支持不完善。這三種工具對很多種SQL方言支持不好。
以Druid為例,它的SQL格式化實現(xiàn)步驟是:
1、進行詞法和語法的分析生成虛擬語法樹。
2、從根節(jié)點開始向下遍歷虛擬語法樹的每個節(jié)點。
3、每個節(jié)點根據(jù)自己的類型按照語法規(guī)范格式化輸出子節(jié)點和自身的信息。
當(dāng)訪問過每個節(jié)點后,程序會生成相應(yīng)的格式化后的SQL。
這種格式化方式為了處理方便會忽略掉注釋,然而保留注釋的格式化才能算是完整的格式化。
自己實現(xiàn)SQL語言解析的方式,系統(tǒng)難以維護。已目前的Druid為例。當(dāng)前對一些SQL方言的語法支持不是太友好,如果在代碼成面實現(xiàn)一些語法難度非常大。
發(fā)明內(nèi)容
為解決現(xiàn)有技術(shù)中存在的上述問題,本發(fā)明提供一種SQL格式化的方法,該方法構(gòu)建在ANTLR工具之上,依賴ANTLR的詞法和語法解析器的自動生成技術(shù),使得整體技術(shù)方案通用性(可以方便的支持其他SQL方言)和可維護性(修改ANTLR的語法詞法定義,避免語法和詞法分析器的復(fù)雜代碼維護)更強。技術(shù)著重在SQL腳本本身的格式化和原始腳本注釋位置的精準(zhǔn)還原上。
本發(fā)明通過下述技術(shù)方案實現(xiàn):一種SQL格式化的方法,該方法包括:
A、詞法分析提取注釋;
B、自定義語法分析過程;
C、重新定義ANTLR的createToken方法;
D、遍歷虛擬語法樹,確定注釋位置;
E、格式化輸出。
進一步的,所述步驟A中還包括編寫ANTLR詞法和語法腳本。
進一步的,所述步驟A中還包括設(shè)定行注釋的詞法分析通道為一個特殊通道,區(qū)別于空格和換行,為后續(xù)直接在詞法分析結(jié)果中直接過濾出所有的注釋。
進一步的,所述步驟A中還包括完成詞法分析后,將所有的注釋Token保存到一個單獨隊列;當(dāng)前Token信息包含:所在原始字符串的行號和行內(nèi)的偏移量。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于魏明偉,未經(jīng)魏明偉許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811484271.3/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 基于移動終端WAP瀏覽器詞法分析器的實現(xiàn)方法
- 基于詞法分析的客戶名稱計算機檢索方法
- 一種基于MySQL的SQL解析器及其解析方法
- 新聞標(biāo)題的處理方法及裝置
- 網(wǎng)管系統(tǒng)北向監(jiān)控訂購?fù)ㄖ^濾方法
- 詞法分析模型的訓(xùn)練方法、裝置、電子設(shè)備、存儲介質(zhì)
- 軌道業(yè)務(wù)的自動化測試方法、裝置及設(shè)備
- 一種面向神經(jīng)網(wǎng)絡(luò)機器翻譯的英文詞法分析方法及系統(tǒng)
- 一種自動化更新的詞法分析系統(tǒng)
- 基于Bi-LSTM-CRF的三位一體字標(biāo)注漢語詞法分析方法





