本發(fā)明涉及數(shù)據(jù)庫(kù)
技術(shù)領(lǐng)域:
:,尤其涉及一種獲取數(shù)據(jù)庫(kù)變更信息的方法和裝置。
背景技術(shù):
::在軟件項(xiàng)目開發(fā)工作中,經(jīng)常要對(duì)數(shù)據(jù)庫(kù)腳本文件SQL(StructuredQueryLanguage,結(jié)構(gòu)化查詢語(yǔ)言)進(jìn)行變更。如果項(xiàng)目版本有多個(gè)分支,而每個(gè)分支中又有眾多的SQL文件,那么改動(dòng)量還是比較大的。對(duì)于如此多的改動(dòng),怎么能及時(shí)知道開發(fā)人員對(duì)數(shù)據(jù)庫(kù)都做了哪些改動(dòng)、這些改動(dòng)是否都是合法的、這些改動(dòng)對(duì)數(shù)據(jù)庫(kù)升級(jí)有什么影響、對(duì)升級(jí)后的功能有什么影響。版本管理是軟件配置管理的基礎(chǔ)。SVN(subversion)是近年來(lái)崛起的版本管理控制工具,它提供的功能有:1、集中管理,安全授權(quán);2、文件管理,查看;3、文件保護(hù),避免不同用戶同步更改文件時(shí)的沖突;4、提供不同版本源文件的比較。SVN提供的可查看不同版本的源文件功能和可查看每次變更內(nèi)容的功能為解決上述問(wèn)題提供了可能。技術(shù)實(shí)現(xiàn)要素:本發(fā)明要解決的技術(shù)問(wèn)題是,提供一種獲取數(shù)據(jù)庫(kù)變更信息的方法和裝置,克服現(xiàn)有技術(shù)中無(wú)法準(zhǔn)確獲知數(shù)據(jù)庫(kù)文件變更情況的缺陷。本發(fā)明采用的技術(shù)方案是,所述獲取數(shù)據(jù)庫(kù)變更信息的方法,包括:基于變更前后兩個(gè)版本的SQL文件之間的變更內(nèi)容,確定變更的對(duì)象信息;針對(duì)變更的對(duì)象信息進(jìn)行合法性判斷,并輸出合法性判斷的結(jié)果。進(jìn)一步的,變更前后兩個(gè)版本的SQL文件之間的變更內(nèi)容的確定過(guò)程,包括:利用版本管理工具對(duì)同一個(gè)項(xiàng)目分支中變更前后的兩個(gè)版本的SQL文件執(zhí)行區(qū)別比對(duì)命令,得到初步變更內(nèi)容;基于初步變更內(nèi)容進(jìn)行空白信息和注釋信息的過(guò)濾后,得到有效變更內(nèi)容,即作為變更前后兩個(gè)版本的SQL文件之間的變更內(nèi)容。進(jìn)一步的,所述基于變更前后兩個(gè)版本的SQL文件之間的變更內(nèi)容,確定變更的對(duì)象信息,包括:A1:根據(jù)在變更前后兩個(gè)版本的SQL文件之間的變更內(nèi)容中所包含的關(guān)鍵字確定變更的對(duì)象類型:若包含數(shù)據(jù)類型、null或者notnull的關(guān)鍵字,則判定是字段變化;若包含createtable或者table的關(guān)鍵字,則判定是表變化;若包含constraint或者primarykey的關(guān)鍵字,則判定是主鍵變化;若包含createindex或者index的關(guān)鍵字,則判定是索引變化;若包含createview或者view的關(guān)鍵字,則判定是視圖變化;A2:基于所述變更內(nèi)容和確定出的變更的對(duì)象類型,確定變更的對(duì)象名稱,并確定以下統(tǒng)計(jì)信息:對(duì)象變更前內(nèi)容和對(duì)象變更后內(nèi)容。進(jìn)一步的,針對(duì)變更的對(duì)象信息進(jìn)行合法性判斷,包括:判斷變更的對(duì)象信息是否滿足下面的條件,若是,則判定合法,否則判定不合法:對(duì)于字段長(zhǎng)度的變更,則不允許縮?。粚?duì)于字段約束由null變?yōu)閚otnull,則必須增加默認(rèn)值約束;對(duì)于字段類型的變更,則變更后的字段類型要兼容變更前的字段類型;對(duì)于表名稱的變更、增加主鍵或者修改主鍵,則必須按照主鍵名_表名的格式來(lái)命名主鍵;對(duì)于對(duì)象名稱的變更,統(tǒng)一要求大寫命名。進(jìn)一步的,所述方法,還包括:從執(zhí)行區(qū)別比對(duì)命令所得到的初步變更內(nèi)容所在的文件中獲取以下輔助信息:項(xiàng)目分支中的SQL文件的路徑、修改的SQL文件名稱和變更的對(duì)象所屬的表名稱;利用版本管理工具對(duì)變更后的版本的SQL文件執(zhí)行區(qū)別信息獲取命令,得到該版本的SQL文件對(duì)應(yīng)的修改日期和修改責(zé)任人;將所述輔助信息、修改日期和修改責(zé)任人連同合法性判斷的結(jié)果一起輸出。本發(fā)明還提供一種獲取數(shù)據(jù)庫(kù)變更信息的裝置,包括:確定模塊,用于基于變更前后兩個(gè)版本的SQL文件之間的變更內(nèi)容,確定變更的對(duì)象信息;判斷模塊,用于針對(duì)變更的對(duì)象信息進(jìn)行合法性判斷,并輸出合法性判斷的結(jié)果。進(jìn)一步的,所述確定模塊,還用于:利用版本管理工具對(duì)同一個(gè)項(xiàng)目分支中變更前后的兩個(gè)版本的SQL文件執(zhí)行區(qū)別比對(duì)命令,得到初步變更內(nèi)容;基于初步變更內(nèi)容進(jìn)行空白信息和注釋信息的過(guò)濾后,得到有效變更內(nèi)容,即作為變更前后兩個(gè)版本的SQL文件之間的變更內(nèi)容。進(jìn)一步的,所述確定模塊,具體用于:根據(jù)在變更前后兩個(gè)版本的SQL文件之間的變更內(nèi)容中所包含的關(guān)鍵字確定變更的對(duì)象類型:若包含數(shù)據(jù)類型、null或者notnull的關(guān)鍵字,則判定是字段變化;若包含createtable或者table的關(guān)鍵字,則判定是表變化;若包含constraint或者primarykey的關(guān)鍵字,則判定是主鍵變化;若包含createindex或者index的關(guān)鍵字,則判定是索引變化;若包含createview或者view的關(guān)鍵字,則判定是視圖變化;基于所述變更內(nèi)容和確定出的變更的對(duì)象類型,確定變更的對(duì)象名稱,并確定以下統(tǒng)計(jì)信息:對(duì)象變更前內(nèi)容和對(duì)象變更后內(nèi)容。進(jìn)一步的,所述判斷模塊,具體用于:判斷變更的對(duì)象信息是否滿足下面的條件,若是,則判定合法,否則判定不合法:對(duì)于字段長(zhǎng)度的變更,則不允許縮?。粚?duì)于字段約束由null變?yōu)閚otnull,則必須增加默認(rèn)值約束;對(duì)于字段類型的變更,則變更后的字段類型要兼容變更前的字段類型;對(duì)于表名稱的變更、增加主鍵或者修改主鍵,則必須按照主鍵名_表名的格式來(lái)命名主鍵;對(duì)于對(duì)象名稱的變更,統(tǒng)一要求大寫命名。進(jìn)一步的,所述確定模塊,還用于:從執(zhí)行區(qū)別比對(duì)命令所得到的初步變更內(nèi)容所在的文件中獲取以下輔助信息:項(xiàng)目分支中的SQL文件的路徑、修改的SQL文件名稱和變更的對(duì)象所屬的表名稱;利用版本管理工具對(duì)變更后的版本的SQL文件執(zhí)行區(qū)別信息獲取命令,得到該版本的SQL文件對(duì)應(yīng)的修改日期和修改責(zé)任人;將所述輔助信息、修改日期和修改責(zé)任人連同合法性判斷的結(jié)果一起輸出。采用上述技術(shù)方案,本發(fā)明至少具有下列優(yōu)點(diǎn):本發(fā)明所述獲取數(shù)據(jù)庫(kù)變更信息的方法和裝置,通過(guò)版本管理工具提供的一些腳本命令和自定義的規(guī)則,準(zhǔn)確獲取SQL文件中的變更內(nèi)容,然后根據(jù)規(guī)則解析出數(shù)據(jù)庫(kù)表結(jié)構(gòu)的變更情況。進(jìn)而可以分析此變更的規(guī)范性、合法性,防止不合法的變更導(dǎo)致數(shù)據(jù)庫(kù)升級(jí)腳本的維護(hù)性降低,同時(shí)也可以緩解人工審核的壓力和降低工作量。附圖說(shuō)明圖1為本發(fā)明第一實(shí)施例的獲取數(shù)據(jù)庫(kù)變更信息的方法流程圖;圖2為本發(fā)明第三實(shí)施例的獲取數(shù)據(jù)庫(kù)變更信息的裝置組成結(jié)構(gòu)示意圖;圖3為本發(fā)明第五實(shí)施例的獲取數(shù)據(jù)庫(kù)變更信息的方法流程示意圖;圖4為本發(fā)明第五實(shí)施例的數(shù)據(jù)庫(kù)變更信息管理的系統(tǒng)組成結(jié)構(gòu)示意圖。具體實(shí)施方式為更進(jìn)一步闡述本發(fā)明為達(dá)成預(yù)定目的所采取的技術(shù)手段及功效,以下結(jié)合附圖及較佳實(shí)施例,對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明如后。本發(fā)明第一實(shí)施例,一種獲取數(shù)據(jù)庫(kù)變更信息的方法,如圖1所示,包括以下具體步驟:步驟S101,基于變更前后兩個(gè)版本的SQL文件之間的變更內(nèi)容,確定變更的對(duì)象信息;具體的,在步驟S101中,變更前后兩個(gè)版本的SQL文件之間的變更內(nèi)容的確定過(guò)程,包括:A1:利用版本管理工具對(duì)同一個(gè)項(xiàng)目分支中變更前后的兩個(gè)版本的SQL文件執(zhí)行區(qū)別比對(duì)命令,得到初步變更內(nèi)容;該版本管理工具可以選用SVN版本管理工具、CVS(ConcurrentVersionSystem,并行版本系統(tǒng))等,若采用SVN版本管理工具,則對(duì)同一個(gè)項(xiàng)目分支中變更前后的兩個(gè)版本的SQL文件執(zhí)行區(qū)別比對(duì)命令即svndiff命令,得到初步變更內(nèi)容。該初步變更內(nèi)容包含新增、刪除、修改等方面。A2:基于初步變更內(nèi)容進(jìn)行空白信息和注釋信息的過(guò)濾后,得到有效變更內(nèi)容,即作為變更前后兩個(gè)版本的SQL文件之間的變更內(nèi)容。進(jìn)一步的,步驟S101包括:B1:根據(jù)在變更前后兩個(gè)版本的SQL文件之間的變更內(nèi)容中所包含的關(guān)鍵 字確定變更的對(duì)象類型:若包含數(shù)據(jù)類型、null或者notnull的關(guān)鍵字,則判定是字段變化;更進(jìn)一步的,若包含數(shù)據(jù)類型的關(guān)鍵字,則判定是字段類型變化或者字段長(zhǎng)度變化,具體還要看數(shù)據(jù)類型的關(guān)鍵字后面所跟的字段長(zhǎng)度是否發(fā)生變化;若包含null或者notnull的關(guān)鍵字,則判定是字段約束變化;若包含createtable或者table的關(guān)鍵字,則判定是表變化;更進(jìn)一步的,若包含createtable的關(guān)鍵字,則判定是新增表;若包含table的關(guān)鍵字,則可能僅僅是表的內(nèi)容發(fā)生變化;若包含constraint或者primarykey的關(guān)鍵字,則判定是主鍵變化;若包含createindex或者index的關(guān)鍵字,則判定是索引變化;若包含createview或者view的關(guān)鍵字,則判定是視圖變化。B2:基于所述變更內(nèi)容和確定出的變更的對(duì)象類型,確定變更的對(duì)象名稱,并確定以下統(tǒng)計(jì)信息:對(duì)象變更前內(nèi)容和對(duì)象變更后內(nèi)容。比如:針對(duì)主鍵變化的情況,該統(tǒng)計(jì)信息為主鍵列的變化情況介紹,例如由主鍵列a、b變化成b、c;針對(duì)索引變化的情況,該統(tǒng)計(jì)信息為索引列的變化情況介紹。步驟S102,針對(duì)變更的對(duì)象信息進(jìn)行合法性判斷,并輸出合法性判斷的結(jié)果。具體的,在步驟S102中,針對(duì)變更的對(duì)象信息進(jìn)行合法性判斷,包括:判斷變更的對(duì)象信息是否滿足下面的條件,若是,則判定合法,否則判定不合法:對(duì)于字段長(zhǎng)度的變更,則不允許縮??;對(duì)于字段約束由null變?yōu)閚otnull,則必須增加默認(rèn)值約束;對(duì)于字段類型的變更,則變更后的字段類型要兼容變更前的字段類型;對(duì)于表名稱的變更、增加主鍵或者修改主鍵,則必須按照主鍵名_表名的格式來(lái)命名主鍵;對(duì)于對(duì)象名稱的變更,統(tǒng)一要求大寫命名。本發(fā)明第二實(shí)施例,一種獲取數(shù)據(jù)庫(kù)變更信息的方法,本實(shí)施例所述方法與第一實(shí)施例大致相同,區(qū)別在于,本實(shí)施例的所述方法,還包括:從步驟S101執(zhí)行區(qū)別比對(duì)命令所得到的初步變更內(nèi)容所在的文件中獲取以下輔助信息:項(xiàng)目分支中的SQL文件的路徑、修改的SQL文件名稱和變更的對(duì)象所屬的表名稱;利用版本管理工具對(duì)變更后的版本的SQL文件執(zhí)行區(qū)別信息獲取命令,得到該版本的SQL文件對(duì)應(yīng)的修改日期和修改責(zé)任人;該版本管理工具可以選用SVN版本管理工具、CVS等,若采用SVN版本管理工具,則對(duì)變更后的版本的SQL文件執(zhí)行區(qū)別信息獲取命令為svninfo命令。步驟S102中還包括:將所述輔助信息、修改日期和修改責(zé)任人連同合法性判斷的結(jié)果一起輸出。本發(fā)明第三實(shí)施例,與第一實(shí)施例對(duì)應(yīng),本實(shí)施例介紹一種獲取數(shù)據(jù)庫(kù)變更信息的裝置,如圖2所示,該裝置包括以下組成部分:1)確定模塊201,用于基于變更前后兩個(gè)版本的SQL文件之間的變更內(nèi)容,確定變更的對(duì)象信息;具體的,確定模塊201,還用于確定出變更前后兩個(gè)版本的SQL文件之間的變更內(nèi)容,確定過(guò)程如下:利用版本管理工具對(duì)同一個(gè)項(xiàng)目分支中變更前后的兩個(gè)版本的SQL文件執(zhí)行區(qū)別比對(duì)命令,得到初步變更內(nèi)容;基于初步變更內(nèi)容進(jìn)行空白信息和注釋信息的過(guò)濾后,得到有效變更內(nèi)容,即作為變更前后兩個(gè)版本的SQL文件之間的變更內(nèi)容。進(jìn)一步的,確定模塊201用于:根據(jù)在變更前后兩個(gè)版本的SQL文件之間的變更內(nèi)容中所包含的關(guān)鍵字確定變更的對(duì)象類型:若包含數(shù)據(jù)類型、null或者notnull的關(guān)鍵字,則判定是字段變化;更進(jìn)一步的,若包含數(shù)據(jù)類型的關(guān)鍵字,則判定是字段類型變化或者字段長(zhǎng)度變化,具體還要看數(shù)據(jù)類型的關(guān)鍵字后面所跟的字段長(zhǎng)度是否發(fā)生變化;若包含null或者notnull的關(guān)鍵字,則判定是字段約束變化;若包含createtable或者table的關(guān)鍵字,則判定是表變化;更進(jìn)一步的,若包含createtable的關(guān)鍵字,則判定是新增表;若包含table的關(guān)鍵字,則可能僅僅是表的內(nèi)容發(fā)生變化;若包含constraint或者primarykey的關(guān)鍵字,則判定是主鍵變化;若包含createindex或者index的關(guān)鍵字,則判定是索引變化;若包含createview或者view的關(guān)鍵字,則判定是視圖變化?;谒鲎兏鼉?nèi)容和確定出的變更的對(duì)象類型,確定變更的對(duì)象名稱,并確定以下統(tǒng)計(jì)信息:對(duì)象變更前內(nèi)容和對(duì)象變更后內(nèi)容。比如:針對(duì)主鍵變化的情況,該統(tǒng)計(jì)信息為主鍵列的變化情況介紹;針對(duì)索引變化的情況,該統(tǒng)計(jì)信息為索引列的變化情況介紹。2)判斷模塊202,用于針對(duì)變更的對(duì)象信息進(jìn)行合法性判斷,并輸出合法性判斷的結(jié)果。具體的,判斷模塊202用于:判斷變更的對(duì)象信息是否滿足下面的條件,若是,則判定合法,否則判定不合法:對(duì)于字段長(zhǎng)度的變更,則不允許縮小;對(duì)于字段約束由null變?yōu)閚otnull,則必須增加默認(rèn)值約束;對(duì)于字段類型的變更,則變更后的字段類型要兼容變更前的字段類型;對(duì)于表名稱的變更、增加主鍵或者修改主鍵,則必須按照主鍵名_表名的格式來(lái)命名主鍵;對(duì)于對(duì)象名稱的變更,統(tǒng)一要求大寫命名。本發(fā)明第四實(shí)施例,與第二實(shí)施例對(duì)應(yīng)的介紹一種獲取數(shù)據(jù)庫(kù)變更信息的方法,本實(shí)施例所述方法與第三實(shí)施例大致相同,區(qū)別在于,在本實(shí)施例的所述裝置中,確定模塊201還用于:從執(zhí)行區(qū)別比對(duì)命令所得到的初步變更內(nèi)容所在的文件中獲取以下輔助信息:項(xiàng)目分支中的SQL文件的路徑、修改的SQL文件名稱和變更的對(duì)象所屬的表名稱;利用版本管理工具對(duì)變更后的版本的SQL文件執(zhí)行區(qū)別信息獲取命令,得到該版本的SQL文件對(duì)應(yīng)的修改日期和修改責(zé)任人;此時(shí),判斷模塊202還用于:將所述輔助信息、修改日期和修改責(zé)任人連同合法性判斷的結(jié)果一起輸出。本發(fā)明第五實(shí)施例,本實(shí)施例是在上述實(shí)施例的基礎(chǔ)上,以SVN為例,結(jié)合附圖3~4介紹一個(gè)本發(fā)明的應(yīng)用實(shí)例。本實(shí)施例的一種獲取數(shù)據(jù)庫(kù)變更信息的方法的流程如圖3所示,包括以下詳細(xì)步驟:步驟S01:確定待檢查的SQL文件所在的項(xiàng)目分支及待比較的版本信息。所述的項(xiàng)目分支指的是項(xiàng)目版本分支,目前,項(xiàng)目版本通常都使用CVS、SVN等軟件版本管理工具進(jìn)行管理,本實(shí)施例中以SVN為例進(jìn)行說(shuō)明,但不限于此。所述的版本信息指的是SVN的版本號(hào),本實(shí)施例中分別以BASE和HEAD標(biāo)記兩個(gè)待比較的SVN版本號(hào)。步驟S02:根據(jù)SVN版本管理工具的svndiff命令,獲取待檢查的SQL文件所在項(xiàng)目分支在指定的兩個(gè)版本號(hào)間的所有變更內(nèi)容,生成變更內(nèi)容文件。所述的變更內(nèi)容包括新增、刪除、修改。具體的,本實(shí)施例中應(yīng)用如下svndiff命令:“svndiff–rBASE:HEAD“待檢查SQL文件所在的SVN分支路徑”>“變更內(nèi)容文件輸出路徑””;需要說(shuō)明的是,所述的變更內(nèi)容可以輸出到任意方便解析查看的文件格式中,本實(shí)施例中變更內(nèi)容輸出到svnDiff.txt文本文件中但不限于此,比如亦可輸入到.log或是.xml文件中。步驟S03:解析變更內(nèi)容文件svnDiff.txt,過(guò)濾分析每個(gè)SQL文件的每一處變更內(nèi)容,提取有效的詳細(xì)變更信息,并據(jù)此分析給出數(shù)據(jù)庫(kù)結(jié)構(gòu)變更結(jié)論。由于所獲取的變更內(nèi)容文件中可能包含有SQL文件的非變更內(nèi)容,所以首先要過(guò)濾出只包含SQL文件的變更內(nèi)容,具體的,每個(gè)SQL文件的變更內(nèi)容格式如下所示:“Index:dbscript/dbscript-common/**/*.sql=========================================================---dbscript/dbscript-common/**/*.sql(版本88188)+++dbscript/dbscript-common/**/*.sql(版本88244)@@-1188,7+1188,7@@autoBWFrequencynumeric(10,0)null,autoBWMultiplenumeric(10,0)null,tunnelTypeintnull,-roleintnull,+neRoleintnull,directionintnull,attrInt1intnull,attrInt2intnull”;其中Index:用于標(biāo)記有變化的SQL文件的SVN路徑,每一處形如@@-1188,7+1188,7@@之后標(biāo)記的是SQL文件中具體的變更內(nèi)容,“-1188,7”和“+1188,7”分別指示變更內(nèi)容在BASE版本和HEAD版本中的具體位置信息。需要注意的是只有標(biāo)記有“-”或是“+”才是真正變化的內(nèi)容,其余信息是svndiff命令為統(tǒng)一上下文而輸出的,方便定位變更內(nèi)容在源文件中的位置。所述的提取有效的詳細(xì)變更信息指的是對(duì)變更內(nèi)容過(guò)濾掉空白、注釋等與 SQL內(nèi)容變化無(wú)關(guān)的信息。所述的對(duì)有效變更內(nèi)容進(jìn)行分析包括獲取變更的對(duì)象類型、對(duì)象名稱、對(duì)象變更前內(nèi)容、對(duì)象變更后內(nèi)容,對(duì)于字段、主鍵、索引等對(duì)象還要根據(jù)標(biāo)記位@@信息獲取對(duì)象所屬的表信息,需要說(shuō)明的是,對(duì)于修改的內(nèi)容,svndiff命令看到的是先刪除后增加。所述的分析給出變更結(jié)論指的是依據(jù)自定義的規(guī)則,比較刪除部分和增加部分的內(nèi)容,以判斷數(shù)據(jù)庫(kù)結(jié)構(gòu)變更情況。所述自定義規(guī)則列舉如下,但并不限于此:若是字段長(zhǎng)度的修改,則不允許縮??;若字段約束由null變?yōu)閚otnull,則必須增加默認(rèn)值約束;若是字段類型修改,則修改后的類型要兼容修改前的,以保證表非空的時(shí)候轉(zhuǎn)換不報(bào)錯(cuò);若是表增加或修改主鍵,則必須定義主鍵名,且按照主鍵_表名稱的格式命名;對(duì)象命名統(tǒng)一要求按照大寫命名。對(duì)于不符合自定義規(guī)則的SQL內(nèi)容變更都認(rèn)為是不合法的變更。具體的,本實(shí)施例中首先利用正則表達(dá)式進(jìn)行匹配判斷變更類型,比如定義數(shù)據(jù)類型、null或notnull的關(guān)鍵字用于判斷是否是字段屬性變化,定義createtable的關(guān)鍵字用于判斷是否是新增表,定義constraint、primarykey的關(guān)鍵字用于判斷是主鍵變化,定義createindex的關(guān)鍵字用于判斷是索引變更等,但不限于此,然后根據(jù)自定義規(guī)則分析給出SQL內(nèi)容變更結(jié)論,比如是字段長(zhǎng)度變化、修改字段名稱、主鍵名稱變化、新增表等,以及這些變更是否合法。步驟S04:根據(jù)版本管理工具svninfo命令,獲取每個(gè)SQL文件的變更責(zé)任人及修改日期,以便對(duì)于不合規(guī)范的SQL變更內(nèi)容跟蹤整改。具體的,本實(shí)施例中應(yīng)用如下命令:“svninfo-rHEAD“SQL文件SVN路徑”>>“svn信息文件輸出路徑””;較佳的,可以將每個(gè)SQL文件的svninfo命令生成到批處理中,然后執(zhí)行 批處理獲取所有SQL文件變更的責(zé)任人和修改日期,比如,本實(shí)施例中生成批處理svnInfo.bat。步驟S05:將步驟S03和S04中獲取到的SQL文件的相關(guān)變更信息輸出到EXCEL報(bào)表中,但不限于此,具體的統(tǒng)計(jì)信息包括:修改日期、修改責(zé)任人、SVN項(xiàng)目版本路徑、修改的SQL文件名稱、對(duì)象所屬表名稱、對(duì)象類型、對(duì)象名稱、對(duì)象變更前內(nèi)容、對(duì)象變更后內(nèi)容、變更結(jié)論,其中,修改日期、修改責(zé)任人、SVN項(xiàng)目版本路徑、修改的SQL文件名稱、對(duì)象所屬表名稱、對(duì)象類型和對(duì)象名稱可以從變更內(nèi)容文件svnDiff.txt直接讀取,對(duì)象變更前內(nèi)容、對(duì)象變更后內(nèi)容則是經(jīng)過(guò)統(tǒng)計(jì)后的變更情況介紹,變更結(jié)論則是經(jīng)過(guò)自定義的規(guī)則判斷后得出的結(jié)論。EXCEL報(bào)表的形式讓數(shù)據(jù)庫(kù)結(jié)構(gòu)變更情況一目了然,方便DBA檢查變更內(nèi)容是否符合規(guī)范,及時(shí)反饋給責(zé)任人修改跟蹤。圖4為本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)變更信息管理系統(tǒng)結(jié)構(gòu)示意圖,該管理系統(tǒng)包括獲取模塊、提取分析模塊和輸出模塊,其中獲取模塊可通過(guò)圖3中步驟S02實(shí)施,提取分析模塊通過(guò)步驟S03和S04實(shí)施,輸出模塊可通過(guò)步驟S05實(shí)施。,上述模塊所完成的功能類似于第三、四實(shí)施例中確定模塊、判斷模塊所完成的功能,只是功能劃分的方式不同而已。較佳的,根據(jù)所述的實(shí)施方案,可將數(shù)據(jù)庫(kù)變更信息管理系統(tǒng)部署到版本機(jī),隨項(xiàng)目版本分支更新每天定時(shí)統(tǒng)計(jì),自動(dòng)監(jiān)控SQL文件變化情況,匯總詳細(xì)變更內(nèi)容,及時(shí)捕獲數(shù)據(jù)庫(kù)變更信息,同時(shí)為自動(dòng)生成數(shù)據(jù)庫(kù)升級(jí)腳本提供依據(jù)。本發(fā)明實(shí)施例的所述獲取數(shù)據(jù)庫(kù)變更信息的方法的目的在于,解決軟件項(xiàng)目開發(fā)過(guò)程中,無(wú)法及時(shí)準(zhǔn)確獲知數(shù)據(jù)庫(kù)結(jié)構(gòu)變更信息以及腳本變更合法性的問(wèn)題,提高數(shù)據(jù)庫(kù)的可維護(hù)性。與現(xiàn)有技術(shù)相比較,本發(fā)明有如下優(yōu)點(diǎn):自動(dòng)監(jiān)控任何有變化的SQL文件通過(guò)自定義的規(guī)則文件,自動(dòng)分析出數(shù)據(jù)庫(kù)結(jié)構(gòu)變更情況匯總分析結(jié)果,讓數(shù)據(jù)庫(kù)的變更情況一目了然及早發(fā)現(xiàn)腳本變更中的不合法和不規(guī)范性問(wèn)題,降低數(shù)據(jù)庫(kù)升級(jí)腳本出錯(cuò)的概率和風(fēng)險(xiǎn)。讓數(shù)據(jù)庫(kù)升級(jí)腳本的自動(dòng)化工作變?yōu)榭赡?。通過(guò)具體實(shí)施方式的說(shuō)明,應(yīng)當(dāng)可對(duì)本發(fā)明為達(dá)成預(yù)定目的所采取的技術(shù)手段及功效得以更加深入且具體的了解,然而所附圖示僅是提供參考與說(shuō)明之用,并非用來(lái)對(duì)本發(fā)明加以限制。當(dāng)前第1頁(yè)1 2 3 當(dāng)前第1頁(yè)1 2 3