本發(fā)明涉及數(shù)據(jù)庫領域,尤其涉及一種結(jié)構化查詢語言(structuredquerylanguage,sql)腳本的處理方法及裝置。
背景技術:
::大型企業(yè)信息技術(informationtechnology,it)系統(tǒng)龐大復雜,業(yè)務需求旺盛,為快速響應新功能需求,it系統(tǒng)需要快速頻繁迭代實施it系統(tǒng)的上線。而大部分新功能需求上線都會涉及it系統(tǒng)數(shù)據(jù)模型(datamodel)的變更,因此每次新功能需求上線都有可能對支撐it系統(tǒng)的數(shù)據(jù)庫物理模型進行變更。正常的it系統(tǒng)上線流程一般分為需求分析、開發(fā)、測試、上線4個環(huán)節(jié),其中上線環(huán)節(jié)需要通過執(zhí)行若干個數(shù)據(jù)庫的上線sql腳本來實現(xiàn)對數(shù)據(jù)庫物理模型的變更,這里執(zhí)行的上線sql腳本是一種實現(xiàn)靜態(tài)、離線的數(shù)據(jù)庫物理模型和配置數(shù)據(jù)變更的sql代碼,而不是用于滿足實際it系統(tǒng)業(yè)務功能需要而開發(fā)的查詢、統(tǒng)計和持久化數(shù)據(jù)庫數(shù)據(jù)的sql代碼;通常情況下上線環(huán)節(jié)執(zhí)行的上線sql腳本數(shù)量遠遠大于上線需求量,每次上線環(huán)節(jié)執(zhí)行的上線sql腳本數(shù)量均數(shù)以百計。在傳統(tǒng)的上線環(huán)節(jié)中,開發(fā)人員、測試人員及項目管理者更多的注重應用程序的功能完善性和代碼可靠性,而對上線sql腳本的正確規(guī)范性重視不足,故時常出現(xiàn)由于上線sql腳本發(fā)布錯誤而導致it系統(tǒng)上線延遲或上線回退的問題,因此,對上線sql腳本進行審查是保證it系統(tǒng)順利上線的關鍵。目前,對上線sql腳本的審查通常采用手工方式,即,由數(shù)據(jù)庫開發(fā)管理員手工逐個對上線sql腳本的合規(guī)性進行測試,如果發(fā)現(xiàn)上線sql腳本不合規(guī),手工進行修改。然而,采用手工方式上線sql腳本進行優(yōu)化存在以下幾個 方面的問題:(1)人力成本高:由于每次it系統(tǒng)上線涉及的上線sql腳本的數(shù)量眾多,如電信bss(basicserviceset,基本服務集)系統(tǒng)的每次日常上線會涉及至少幾十個業(yè)務需求、幾百個sql腳本的變更發(fā)布,需要大量的數(shù)據(jù)庫開發(fā)管理員測試并優(yōu)化上線sql腳本,人力成本高。(2)上線sql腳本的質(zhì)量得不到保證:由于開發(fā)人員對編寫上線sql腳本依據(jù)的規(guī)范文檔的理解不一致,導致編寫的上線sql腳本質(zhì)量良莠不齊,而數(shù)據(jù)庫開發(fā)管理員對上線sql腳本的合規(guī)性測試也完全依賴于個人經(jīng)驗判斷,很難全面把控上線sql腳本的質(zhì)量。(3)上線sql腳本的執(zhí)行效率不高:現(xiàn)有技術只是對上線sql腳本中的sql語句進行合規(guī)性檢測,并不對上線sql腳本進行合并等優(yōu)化,上線sql腳本數(shù)目仍然很多,在執(zhí)行眾多上線sql腳本上線過程中,由于上線sql腳本間的關系錯綜復雜,而數(shù)據(jù)庫開發(fā)管理員需要大量復制、粘貼上線sql腳本到執(zhí)行框中,在復制、粘貼操作中,很難保證上線sql腳本不發(fā)生錯誤,同時,復制、粘貼操作需要花費大量的執(zhí)行時間,因此,數(shù)據(jù)庫上線sql腳本的執(zhí)行效率不高。綜上所述,現(xiàn)有的采用人工方式對上線sql腳本進行審查時,存在人力成本高、上線sql腳本的質(zhì)量得不到保證、執(zhí)行效率不高等問題,影響it系統(tǒng)的上線進度。技術實現(xiàn)要素:有鑒于此,本發(fā)明實施例期望提供一種上線sql腳本的處理方法及裝置,可以降低人力成本,保證腳本質(zhì)量,提高執(zhí)行效率。為達到上述目的,本發(fā)明的技術方案是這樣實現(xiàn)的:一種上線結(jié)構化查詢語言sql腳本的處理方法,所述方法包括:獲得文件列表中當前處理文件的上線sql腳本;審查所述上線sql腳本中的sql語句,輸出錯誤信息,所述錯誤信息包 括所述上線sql腳本中的錯誤sql語句或錯誤注釋的位置信息及錯誤說明,所述錯誤信息用于提示操作人員對所述錯誤sql語句或錯誤注釋進行修改;針對通過審查的規(guī)范sql語句,根據(jù)規(guī)范sql語句的語句類型,對所述文件列表的各處理文件中的規(guī)范sql語句進行拆分合并。上述方案中,所述審查所述上線sql腳本中的sql語句,輸出錯誤信息,包括:提取所述上線sql腳本中的sql語句,輸出無效信息,所述無線信息包括所述上線sql腳本中不能被提取的無效sql語句或無效注釋的位置信息、無效說明,所述無線信息用于所述提示操作人員對所述無效sql語句或無效注釋進行修改;對通過提取的有效sql語句進行語法分析,輸出語法錯誤信息,所述語法錯誤信息包括有語法錯誤的sql語句的位置信息和語法錯誤說明,所述語法錯誤信息用于所述提示所述操作人員對所述語法錯誤的sql語句進行修改。上述方案中,在對所述有效sql語句進行語法分析時,所述方法還包括:在對所述有效sql語句進行語法分析確定所述有效sql語句為語法正確的規(guī)范sql語句時,獲取所述規(guī)范sql語句的語法結(jié)構生成所述規(guī)范sql語句的語法樹,所述語法樹中包括關鍵字和操作對象。上述方案中,所述根據(jù)規(guī)范sql語句的語句類型,對所述文件列表的各處理文件中的規(guī)范sql語句進行拆分合并,包括:將所述規(guī)范sql語句的語法樹與預設規(guī)則庫中語句類型表進行匹配,確定所述規(guī)范sql語句的語句類型;其中,所述語句類型表包括sql語句的關鍵字和操作對象與語句類型的對應關系;將所述規(guī)范sql語句的語句類型與所述預設規(guī)則庫中的規(guī)則對應表進行匹配,獲得所述規(guī)范sql語句的語句類型對應的分組編號和優(yōu)先級,其中,所述規(guī)則對應表包括sql語句的語句類型對應的分組編號和優(yōu)先級;將所述文件列表的各處理文件中,屬于同一分組編號的規(guī)范sql語句按照優(yōu)先級順序合并到同一sql腳本中。上述方案中,在所述屬于同一分組編號的規(guī)范sql語句按照優(yōu)先級順序合并到同一sql腳本中后,所述方法還包括:在合并后的sql腳本中的每一條sol代碼后加入執(zhí)行終止代碼。一種上線結(jié)構化查詢語言sql腳本的處理裝置,所述裝置包括:獲得單元,用于獲得文件列表中當前處理文件的上線sql腳本;審查單元,用于審查所述獲得單元獲得的所述上線sql腳本中的sql語句,輸出錯誤信息,所述錯誤信息包括所述上線sql腳本中的錯誤sql語句或錯誤注釋的位置信息及錯誤說明,所述錯誤信息用于提示操作人員對所述錯誤sql語句或錯誤注釋進行修改;合并單元,用于針對通過審查單元審查的規(guī)范sql語句,根據(jù)規(guī)范sql語句的語句類型,對所述文件列表的各處理文件中的規(guī)范sql語句進行拆分合并。上述方案中,所述審查單元包括:提取子單元和語法分析子單元,其中,所述提取子單元,用于提取所述獲得單元獲得的上線sql腳本中的sql語句,輸出無效信息,所述無線信息包括所述上線sql腳本中不能被提取的無效sql語句或無效注釋的位置信息、無效說明,所述無線信息用于所述提示操作人員對所述無效sql語句或無效注釋進行修改;所述語法分析子單元,用于對通過所述提取子單元提取的有效sql語句進行語法分析,輸出語法錯誤信息,所述語法錯誤信息包括有語法錯誤的sql語句的位置信息和語法錯誤說明,所述語法錯誤信息用于所述提示所述操作人員對所述語法錯誤的sql語句進行修改。上述方案中,所述語法分析子單元,還用于在對所述有效sql語句進行語法分析確定所述有效sql語句為語法正確的規(guī)范sql語句時,獲取所述規(guī)范sql語句的語法結(jié)構生成所述規(guī)范sql語句的語法樹,所述語法樹中包括關鍵字和操作對象。上述方案中,所述合并單元包括匹配子單元和合并子單元,其中,所述匹配子單元,用于將所述規(guī)范sql語句的語法樹與預設規(guī)則庫中語句 類型表進行匹配,確定所述規(guī)范sql語句的語句類型;其中,所述語句類型表包括sql語句的關鍵字和操作對象與語句類型的對應關系;將所述規(guī)范sql語句的語句類型與所述預設規(guī)則庫中的規(guī)則對應表進行匹配,獲得所述規(guī)范sql語句的語句類型對應的分組編號和優(yōu)先級,其中,所述規(guī)則對應表包括sql語句的語句類型對應的分組編號和優(yōu)先級;所述合并子單元,用于將所述文件列表的各處理文件中,屬于所述匹配子單元確定的同一分組編號的規(guī)范sql語句按照優(yōu)先級順序合并到同一sql腳本中。上述方案中,所述裝置還包括加入單元,其中,所述加入單元,還用于在所述合并單元合并后的sql腳本中的每一條sol代碼后加入執(zhí)行終止代碼。本發(fā)明實施例提供了一種上線sql腳本的處理方法及裝置,獲得文件列表中當前處理文件的上線sql腳本;先自動審查所述上線sql腳本中的sql語句,輸出錯誤信息,用于提示操作人員對所述錯誤sql語句或錯誤注釋進行修改;大大減少人工審查的工作量,提升了審查的效率與準確性,提升了上線sql腳本質(zhì)量;然后針對通過審查的規(guī)范sql語句,根據(jù)規(guī)范sql語句的語句類型,對所述文件列表的各處理文件中的規(guī)范sql語句進行拆分合并,大大減少了上線sql腳本數(shù)量,減少了上線執(zhí)行sql腳本的時間,減少了上線時應用停機時間,并且提升了業(yè)務質(zhì)量。且合并后的各上線sql腳本之間關系簡單,保證數(shù)據(jù)庫開發(fā)管理員的操作效率,進而提升上線sql腳本的執(zhí)行效率。附圖說明圖1為本發(fā)明實施例1提供的一種上線sql腳本的處理方法的流程示意圖;圖2為本發(fā)明實施例2提供的一種上線sql腳本的處理裝置的結(jié)構框圖;圖3為本發(fā)明實施例3提供的另一種上線sql腳本的處理裝置的結(jié)構框圖。具體實施方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述。實施例1本實施例提供了一種上線sql腳本的處理方法,如圖1所示,本實施例方法的處理流程包括以下步驟:步驟101、獲得文件列表中當前處理文件的上線sql腳本。在有新功能需求上線時,開發(fā)人員會先進行需求分析,然后按sql語句的編寫格式編寫上線sql腳本,上線sql腳本的編寫格式由實現(xiàn)編制的規(guī)范文檔進行規(guī)范約束,sql腳本的存儲格式統(tǒng)一采用文本格式、并以.sql或.txt作為文件后綴。為避免后續(xù)處理裝置讀取上線sql腳本時出現(xiàn)中文亂碼,sql腳本的編碼格式采用統(tǒng)一的編碼格式。開發(fā)人員編寫好上線sql腳本并存儲后,處理裝置會對這些上線sql腳本進行審查。在沒有連接數(shù)據(jù)庫即離線的情況下,處理裝置可以通過程序接口讀取當前處理文件中的上線sql腳本,并將讀取到的上線sql腳本存入內(nèi)存中。所述當前處理文件為需要上線的文件目錄下的一個文件;處理裝置需要先獲取指定目錄下的文件列表,然后對獲取的文件列表按文件名進行排序,然后獲取當前處理文件及其所在的文本位置,打開當前處理文件的句柄開始讀取當前處理文件中的上線sql腳本。步驟102、審查所述上線sql腳本中的sql語句,輸出錯誤信息。所述處理裝置讀取完成當前處理文件中的上線sql腳本后,會對存儲在內(nèi)存中的上線sql腳本的sql語句和注釋進行審查,如果審查發(fā)現(xiàn)有錯誤sql語句或錯誤注釋,就暫停審查,輸出錯誤信息,所述錯誤信息包括所述上線sql腳本中的錯誤sql語句或錯誤注釋的位置信息及錯誤說明,所述錯誤信息用于提示操作人員對所述錯誤sql語句或錯誤注釋進行修改;操作人員看到該錯誤信息后,就會按照該錯誤說明修改相應位置處的錯誤sql語句或錯誤注釋。然 后處理裝置對修改后的sql語句或注釋重新進行審查,最終所述上線sql腳本中的sql語句和注釋都通過審查后,表明該上線sql腳本中sql語句都為規(guī)范sql語句。可選的,對上線sql腳本的審查過程可以如下步驟所述:步驟s1、提取所述上線sql腳本中的sql語句,輸出無效信息,所述無線信息包括所述上線sql腳本中的無效sql語句或無效注釋的位置信息及無效說明,所述無線信息用于所述提示操作人員對所述無效sql語句或無效注釋進行修改。所述處理裝置在提取上線sql腳本中的sql語句和注釋過程中,如果sql語句無法識別或注釋格式不正確等,處理裝置就不能提取出該上線sql腳本中的sql語句和注釋,此時就認為發(fā)現(xiàn)了無效sql語句或無效注釋,所述處理裝置會終止后續(xù)提取,記錄所述上線sql腳本中的無效sql語句或無效注釋的位置信息、無效說明這些無效信息,并輸出該無效信息,提示操作人員根據(jù)無效說明對相應位置處的無效sql語句或無效注釋進行修改;操作人員修改完成后,處理裝置對修改后的sql語句或注釋重新進行提取。步驟s2、對通過提取的有效sql語句進行語法分析,輸出語法錯誤信息,所述語法錯誤信息包括有語法錯誤的sql語句的位置信息和語法錯誤說明,所述語法錯誤信息用于所述提示所述操作人員對所述語法錯誤的sql語句進行修改。所述處理裝置提取出所述sql語句后,表明該sql語句是有效的,對于有效的sql語句,所述處理裝置會對該有效sql語句進行語法分析,處理裝置可以先對提取的有效sql語句進行詞法分析,即分析獲取該條有效sql語句中的單詞;在此基礎上,對該條有效sql語句進行語法分析,獲取該條有效sql語句的語法結(jié)構;如果在語法分析過程中發(fā)現(xiàn)錯誤,則所述處理裝置會終止對后續(xù)語句的語法分析,記錄所述上線sql腳本中的語法錯誤的sql語句的位置信息及語法錯誤說明這些語法錯誤信息,并輸出該語法錯誤信息,提示操作人員對相應位置處的語法錯誤的sql語句進行修改;操作人員修改完成后, 處理裝置會對修改后的sql語句或注釋重新進行語法分析。這樣最終所述上線sql腳本中的sql語句和注釋都通過語法分析后,表明該上線sql腳本中sql語句都為語法正確的規(guī)范sql語句。處理裝置在對所述有效sql語句進行語法分析時,所述方法還包括:在對所述有效sql語句進行語法分析確定所述有效sql語句為語法正確的規(guī)范sql語句時,獲取所述規(guī)范sql語句的語法結(jié)構生成所述規(guī)范sql語句的語法樹,所述語法樹中包括關鍵字和操作對象。示例的,如對有效sql語句“createtablecas.table_id”進行語法分析時,可以先進行詞法分析,獲取該條有效sql語句中的單詞create、table、cas.table_id,然后進行語法分析獲得該條有效sql語句的關鍵字create和操作對象table,生成一個語法樹,語法樹是以樹形結(jié)構來描述一條sql語句的語法結(jié)構。在這里需要說明的是,上述進行語法分析以及生成語法樹的方法為本領域人員都清楚了解的,在此不再詳述。根據(jù)上述步驟將當前文件中的上線sql腳本審查完成后,就可以進行步驟101獲得文件列表中下一個處理文件中的上線sql腳本,繼續(xù)進行審查,直到將文件列表中的處理文件都審查完成。步驟103、針對通過審查的規(guī)范sql語句,根據(jù)規(guī)范sql語句的語句類型,對所述文件列表的各處理文件中的規(guī)范sql語句進行拆分合并。處理裝置將所述文件列表的各處理文件中的sql語句都審查完成后,針對這些通過審查的規(guī)范sql語句,處理裝置對所述文件列表的各處理文件中原有上線sql腳本中的規(guī)范sql語句進行拆分后,會根據(jù)規(guī)范sql語句的語句類型,將某些原屬于不同上線sql腳本中的規(guī)范sql語句合并在同一個上線sql腳本中??蛇x的,拆分合并的過程如下步驟:步驟q1、將所述規(guī)范sql語句的語法樹與預設規(guī)則庫中語句類型表進行匹配,確定所述規(guī)范sql語句的語句類型。其中,所述語句類型表包括sql語句的關鍵字和操作對象與語句類型的對 應關系。示例的,如表1所示,一種sql語句可以用一個正則表達式來表示,一種sql語句可以唯一對應一組關鍵字和操作對象,一組關鍵字和操作對象對應設置一個語句類型,如可以設置為在sql語句的正則表達式為(drop\s+(table)\s+[^;[:space:]]+[;]?\.?){1},即sql語句的操作對象為table關鍵字為drop時,設置對應的語句類型為sqd1。表1所述語句類型表中存儲有sql語句的關鍵字和操作對象與語句類型的對應關系。故在語法分析所述規(guī)范sql語句“createtablecas.table_id”獲得包含 有關鍵字“create”和操作對象“table”的語法樹后,可以用語法樹與語句類型表中的關鍵字和操作對象進行匹配,確定所述規(guī)范sql語句關鍵字為“create”且操作對象為“table”時對應的語句類型為“sqd3”。步驟q2、將所述規(guī)范sql語句的語句類型與所述預設規(guī)則庫中的規(guī)則對應表進行匹配,獲得所述規(guī)范sql語句的語句類型對應的分組編號和優(yōu)先級。其中,所述規(guī)則對應表包括sql語句的語句類型對應的分組編號和優(yōu)先級。示例的,如表2所示,規(guī)則對應表中可以是規(guī)則表達式對應的分組編號和優(yōu)先級,規(guī)則表達式由多個語句類型通過邏輯關系符號組合而成,標識多個語句類型的集合,所述邏輯關系符號包括與(&)、或(|)、非(!)。一個規(guī)則對應表內(nèi)包含的各語句類型對應同一個分組編號和優(yōu)先級。表2在設置上述規(guī)則表達式對應的分組編號和優(yōu)先級時,是根據(jù)經(jīng)驗來制定的,如表2所示,可以將表示只刪除對象的sql語句設置一個分組編號rb1,將操作類型為新建的sql語句設置一個分組編號rb2,但是操作類型為新建時,可以是只新建對象如新建表對象或新建索引對象;也可以是新建表指定表空間、新建索引指定表空間、不指定表空間屬性等新建類型,這幾個新建類型之間有一定的依賴關系,必然是先新建表對象或新建索引對象,才能新建表指定表空間,然后新建索引指定表空間、不指定表空間屬性;如果將這幾種語句類型的sql語句采用不同的執(zhí)行順序可能會導致不同的處理結(jié)果,為解決這個問題引入優(yōu)先級,優(yōu)先級的設定是根據(jù)各sql語句的依賴關系來設定的。如表2所示,可以按照該依賴關系將編號為2、3、4、5的規(guī)則表達式分別設置為分組編號為rb2的第1、2、3、4優(yōu)先級。步驟q3、將所述文件列表的各處理文件中,屬于同一分組編號的規(guī)范sql語句按照優(yōu)先級順序合并到同一sql腳本中。通過上述匹配可以獲得各規(guī)范sql語句對應的分組編號和優(yōu)先級;記錄所述文件列表的各處理文件中sql腳本的各規(guī)范sql語句的分組編號和優(yōu)先級;然后針對所述文件列表的所有處理文件的所有規(guī)范sql語句,將屬于同一分組編號的規(guī)范sql語句合并在同一sql腳本中,同一sql腳本中處于同一優(yōu)先級的規(guī)范sql語句排列時無先后順序,處于不同優(yōu)先級的規(guī)范sql語句按照優(yōu)先級順序排列。示例的,假設所述文件列表的各處理文件中有以下三個規(guī)范sql腳本:腳本一:createtablecas.table_id(idint,namevarchar2(30));createtablecas.table_list(idint,namevarchar2(30));腳本二:createtablecas.table_class(class_idint,namevarchar2(30));altertablecas.table_listaddflagnumber;腳本三:insertintocas.table_list(id,name)values(1,'one');altertabledbmon.table_classrenamecolumnnametoclass_name;處理裝置在對腳本1中的sql語句進行語法分析生成語法樹時,獲得腳本一中第一條sql語句的關鍵字為create和操作對象為table,匹配預設規(guī)則庫中語句類型表后獲得其語句類型為sqd3,然后與規(guī)則對應表進行匹配獲得語句類型sqd3對應的分組編號為rb2,優(yōu)先級為1。同理,處理裝置匹配腳本一中第二條sql語句的語句類型為sqd3,匹配的分組編號為rb2,優(yōu)先級為1。由于腳本一所有sql語句屬于同一分組編號,因此合并到一個腳本rb2_20151119.sql中,由于兩個語句的優(yōu)先級都為1,故這兩個sql語句在腳本rb2_20151119.sql中沒有先后順序。按照以上所述,處理裝置匹配腳本二中第一條sql語句的語句類型為sqd3,匹配的分組編號為rb2優(yōu)先級為1;匹配腳本二中第二條sql語句的語句類型為sqd2,匹配的分組編號為rb3,優(yōu)先級為1。處理裝置分析完腳本二后,發(fā)現(xiàn)腳本二第一條sql語句的分組編號與腳本一相同,因此將該第一條sql語句合并到腳本rb2_20151119.sql,腳本二第一條sql語句的優(yōu)先級也為1,故腳本二第一條sql語句與腳本rb2_20151119.sql中的sql語句的排列沒有先后順序,可以排在腳本rb2_20151119.sql的最后。腳本二第二條sql語句的分組編號為:rb3,與上述的其他sql語句不屬于同一分組編號,故將第二條sql語句放入腳本rb3_20151119.sql中。即對腳本二中的sql語句進行了拆分,并將其合并到相應的腳本中。按照以上所述,處理裝置匹配腳本三中第一條sql語句的語句類型為sqm1,匹配的分組編號為rb4,優(yōu)先級為1;匹配腳本三中第二條語句的語句類型為sqd2,匹配的分組編號為rb3,優(yōu)先級為1。腳本三中第一條sql語句的分組編號為rb4,與上述的其他sql語句不屬于同一分組編號,故將第一條sql語句放入腳本rb4_20151119.sql中。腳本三第二條sql語句的分組編號為rb3,與腳本二中第二條sql語句的分組 編號相同,故將腳本三第二條sql語句合并到腳本rb3_20151119.sql中。即對腳本三中的sql語句進行了拆分,并將其合并到相應的腳本中。這樣就完成了上述三個腳本的拆分合并,合并結(jié)果為:腳本rb2_20151119.sql:createtablecas.table_id(idint,namevarchar2(30));createtablecas.table_list(idint,namevarchar2(30));createtablecas.table_class(class_idint,namevarchar2(30));腳本rb3_20151119.sql:altertablecas.table_listaddflagnumber;altertabledbmon.table_classrenamecolumnnametoclass_name;腳本rb4_20151119.sql:insertintocas.table_list(id,name)values(1,'one');可選的,處理裝置將屬于同一分組編號的規(guī)范sql語句按照優(yōu)先級順序合并到同一sql腳本中后,還可以在合并后的sql腳本中的每一條sol代碼后加入執(zhí)行終止代碼。處理裝置將上線sql腳本進行上述處理后,可以將處理后的sql腳本直接輸出到終端或保存到表格文檔中。由于在每一條sol代碼后加入有執(zhí)行終止代碼,在執(zhí)行sql腳本的過程中,在當前sql語句執(zhí)行異常后,可以中止上線sql腳本執(zhí)行,并打印錯誤sql語句的代碼與執(zhí)行sql語句的位置。本實施例方法通過自動審查sql腳本內(nèi)容,大大減少人工審查的工作量,提升了審查的效率與準確性,提升了上線sql腳本質(zhì)量;通過sql腳本中sql語句的拆分合并大大減少了上線sql腳本數(shù)量,減少了上線執(zhí)行sql腳本的時間,減少了上線時應用停機時間,并且提升了業(yè)務質(zhì)量。且合并后的各上線sql腳本之間關系簡單,保證數(shù)據(jù)庫開發(fā)管理員的操作效率,進而提升上線sql腳本的執(zhí)行效率。實施例2本發(fā)明實施例還提供了一種上線sql腳本的處理裝置,如圖2所示,所述 裝置包括:獲得單元201,審查單元202,合并單元203,其中,獲得單元201,用于獲得文件列表中當前處理文件的上線sql腳本;審查單元202,用于審查所述獲得單元201獲得的所述上線sql腳本中的sql語句,輸出錯誤信息,所述錯誤信息包括所述上線sql腳本中的錯誤sql語句或錯誤注釋的位置信息及錯誤說明,所述錯誤信息用于提示操作人員對所述錯誤sql語句或錯誤注釋進行修改;合并單元203,用于針對通過審查單元202審查的規(guī)范sql語句,根據(jù)規(guī)范sql語句的語句類型,對所述文件列表的各處理文件中的規(guī)范sql語句進行拆分合并。可選的,如圖3所示,所述審查單元202包括:提取子單元2021和語法分析子單元2022,其中,所述提取子單元2021,用于提取所述獲得單元201獲得的上線sql腳本中的sql語句,輸出無效信息,所述無線信息包括所述上線sql腳本中不能被提取的無效sql語句或無效注釋的位置信息、無效說明,所述無線信息用于所述提示操作人員對所述無效sql語句或無效注釋進行修改;所述語法分析子單元2022,用于對通過所述提取子單元2021提取的有效sql語句進行語法分析,輸出語法錯誤信息,所述語法錯誤信息包括有語法錯誤的sql語句的位置信息和語法錯誤說明,所述語法錯誤信息用于所述提示所述操作人員對所述語法錯誤的sql語句進行修改??蛇x的,所述語法分析子單元2022,還用于在對所述有效sql語句進行語法分析確定所述有效sql語句為語法正確的規(guī)范sql語句時,獲取所述規(guī)范sql語句的語法結(jié)構生成所述規(guī)范sql語句的語法樹,所述語法樹中包括關鍵字和操作對象。可選的,如圖3所示,所述合并單元203包括匹配子單元2031和合并子單元2032,其中,所述匹配子單元2031,用于將所述規(guī)范sql語句的語法樹與預設規(guī)則庫中語句類型表進行匹配,確定所述規(guī)范sql語句的語句類型;其中,所述語句 類型表包括sql語句的關鍵字和操作對象與語句類型的對應關系;將所述規(guī)范sql語句的語句類型與所述預設規(guī)則庫中的規(guī)則對應表進行匹配,獲得所述規(guī)范sql語句的語句類型對應的分組編號和優(yōu)先級,其中,所述規(guī)則對應表包括sql語句的語句類型對應的分組編號和優(yōu)先級;所述合并子單元2032,用于將所述文件列表的各處理文件中,屬于所述匹配子單元2031確定的同一分組編號的規(guī)范sql語句按照優(yōu)先級順序合并到同一sql腳本中??蛇x的,如圖3所示,所述裝置還包括加入單元204,其中,所述加入單元204,還用于在所述合并單元203合并后的sql腳本中的每一條sql代碼后加入執(zhí)行終止代碼。在實際應用中,本實施例中所述的獲得單元201,審查單元202,合并單元203和加入單元204可以由處理裝置上的中央處理器(cpu)、微處理器(mpu)、數(shù)字信號處理器(dsp)或現(xiàn)場可編程門陣列(fpga)、調(diào)制解調(diào)器等器件實現(xiàn)。本領域內(nèi)的技術人員應明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用硬件實施例、軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器和光學存儲器等)上實施的計算機程序產(chǎn)品的形式。本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備 以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。當前第1頁12當前第1頁12