專利名稱:一種數(shù)據(jù)庫升級的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通信領(lǐng)域,尤其涉及一種數(shù)據(jù)庫升級的方法和裝置。
背景技術(shù):
數(shù)據(jù)庫在設(shè)備中起著非常重要的作用,存儲著設(shè)備當(dāng)前的配置等關(guān)鍵信息,它的正確與否直接影響著設(shè)備是否正常運行。網(wǎng)絡(luò)設(shè)備在運行過程中,由于增加新的功能或者問題的修復(fù)等,可能需要更換軟件版本。在數(shù)據(jù)庫升級時,如果數(shù)據(jù)庫不兼容,則會導(dǎo)致用戶配置的紊亂,重新做一遍配置會很繁瑣,并且浪費時間和精力,且以引起網(wǎng)絡(luò)長時間的中斷
發(fā)明內(nèi)容
·
有鑒于此,本發(fā)明提供一種數(shù)據(jù)庫升級的方法和裝置,升級方法和裝置簡潔、方便。升級之后能夠?qū)崿F(xiàn)配置兼容,且在升級過程中可不中斷業(yè)務(wù)。本發(fā)明提供一種實現(xiàn)數(shù)據(jù)庫升級的方法,適用于關(guān)系型數(shù)據(jù)庫,所述方法包括步驟a、建立新數(shù)據(jù)庫,所述新數(shù)據(jù)庫為新版本數(shù)據(jù)庫;步驟b、獲取新數(shù)據(jù)庫與舊數(shù)據(jù)庫的共有結(jié)構(gòu),根據(jù)所述共有結(jié)構(gòu)組裝升級語句,所述舊數(shù)據(jù)庫為舊版本數(shù)據(jù)庫;步驟C、對新數(shù)據(jù)庫批量執(zhí)行所述升級語句;步驟d、用新數(shù)據(jù)庫替換舊數(shù)據(jù)庫,完成數(shù)據(jù)庫的升級。本發(fā)明同時一種實現(xiàn)數(shù)據(jù)庫升級的裝置,適用于關(guān)系型數(shù)據(jù)庫,所述裝置包括創(chuàng)建模塊,用于建立新數(shù)據(jù)庫,所述新數(shù)據(jù)庫為新版本數(shù)據(jù)庫;升級模塊,用于獲取新數(shù)據(jù)庫與舊數(shù)據(jù)庫的共有結(jié)構(gòu),根據(jù)所述共有結(jié)構(gòu)組裝升級語句,所述舊數(shù)據(jù)庫為舊版本數(shù)據(jù)庫;執(zhí)行模塊,用于對新數(shù)據(jù)庫批量執(zhí)行所述升級語句;替換模塊,用新數(shù)據(jù)庫替換舊數(shù)據(jù)庫,完成數(shù)據(jù)庫的升級。由此可見,本發(fā)明通過先建立需要升級的數(shù)據(jù)庫版本,然后獲取新舊數(shù)據(jù)庫的共有結(jié)構(gòu)后執(zhí)行升級語句來進行數(shù)據(jù)庫的升級,操作簡潔方便,升級之后可實現(xiàn)配置兼容,且可以在不中斷業(yè)務(wù)的情況下升級。
圖I是本發(fā)明實施例的方法流程示意圖。圖2是本發(fā)明另一實施例的具體方法流程示意圖。圖3是本發(fā)明實施例的裝置邏輯結(jié)構(gòu)圖。圖4是本發(fā)明實施例升級模塊子模塊邏輯結(jié)構(gòu)圖。圖5是本發(fā)明實施例組裝升級模塊子模塊邏輯結(jié)構(gòu)圖。
具體實施例方式本發(fā)明實施例提供一種數(shù)據(jù)庫升級的方法和裝置,所述方法和裝置適用于關(guān)系型數(shù)據(jù)庫。所述關(guān)系型數(shù)據(jù)庫是指采用了關(guān)系模型進行組織數(shù)據(jù)的數(shù)據(jù)庫。所述的關(guān)系模型指二維表格模型。本發(fā)明實施例通過先建立新數(shù)據(jù)庫,然后獲取新數(shù)據(jù)庫與舊數(shù)據(jù)庫的共有結(jié)構(gòu),根據(jù)所述共有結(jié)構(gòu)組裝升級語句,再對新數(shù)據(jù)庫批量執(zhí)行所述升級語句,最后用新數(shù)據(jù)庫替換舊數(shù)據(jù)庫,完成數(shù)據(jù)庫的升級。為使本發(fā)明實施例技術(shù)方案更加清楚和明白,以下結(jié)合本發(fā)明具體實施例加以詳細說明。如圖I所示,為本發(fā)明提供的一種實現(xiàn)數(shù)據(jù)庫升級的方法,適用于關(guān)系型數(shù)據(jù)庫,所述方法包括步驟a、建立新數(shù)據(jù)庫,所述新數(shù)據(jù)庫為新版本數(shù)據(jù)庫;在數(shù)據(jù)庫升級的初始階段,首先根據(jù)數(shù)據(jù)庫的建表語句建立新的數(shù)據(jù)庫,所述新 數(shù)據(jù)庫為計劃升級的新版本數(shù)據(jù)庫。步驟b、獲取新數(shù)據(jù)庫與舊數(shù)據(jù)庫的共有結(jié)構(gòu),根據(jù)所述共有結(jié)構(gòu)組裝升級語句,所述舊數(shù)據(jù)庫為舊版本數(shù)據(jù)庫;所述共有結(jié)構(gòu)為新數(shù)據(jù)庫和舊數(shù)據(jù)庫中表名相同的數(shù)據(jù)表中相同的列名。關(guān)系型數(shù)據(jù)庫是由二維表及其之間的聯(lián)系組成的一個數(shù)據(jù)組織,每一張二維表都有一個表名。每一個二維表有若干行和列組成,行在數(shù)據(jù)庫中用元組表示,列在數(shù)據(jù)庫中用字段表示,指每個實體的屬性,用于標(biāo)識元組。當(dāng)新數(shù)據(jù)庫建立完成之后,同時打開新數(shù)據(jù)庫和舊數(shù)據(jù)庫,獲取新數(shù)據(jù)庫與舊數(shù)據(jù)庫的共有結(jié)構(gòu),即獲取新數(shù)據(jù)庫和舊數(shù)據(jù)庫中表名相同的數(shù)據(jù)表中相同的列名,然后組裝與所述共有結(jié)構(gòu)相對應(yīng)的升級語句,例如insert或replace語句,但并不限于此語句。步驟C、對新數(shù)據(jù)庫批量執(zhí)行所述升級語句;當(dāng)獲取完成新數(shù)據(jù)庫和舊數(shù)據(jù)庫中全部的共有結(jié)構(gòu),并組裝所有與所述共有結(jié)構(gòu)相對應(yīng)的升級語句之后,對新數(shù)據(jù)庫批量執(zhí)行所述的升級語句,進行升級。步驟d、用新數(shù)據(jù)庫替換舊數(shù)據(jù)庫,完成數(shù)據(jù)庫的升級。當(dāng)執(zhí)行升級語句完成之后,舊數(shù)據(jù)庫中的數(shù)據(jù)已經(jīng)拷貝到新數(shù)據(jù)庫中,因此用新數(shù)據(jù)庫替換舊數(shù)據(jù)庫,完成數(shù)據(jù)庫的升級。進一步地,所述步驟b具體包括步驟bl、從新數(shù)據(jù)庫中獲取一個表名;步驟b2、查找舊數(shù)據(jù)庫是否存在與獲取的表名相同的表名,若是,執(zhí)行步驟b3,若否,執(zhí)行步驟b4;步驟b3、根據(jù)新數(shù)據(jù)庫和舊數(shù)據(jù)庫中,具有所述相同的表名的數(shù)據(jù)表中的相同列名,組裝升級語句;步驟b4、判斷是否已經(jīng)獲取完新數(shù)據(jù)庫中的所有表名,若是,執(zhí)行步驟C,若否,從新數(shù)據(jù)庫中獲取下一個表名后返回步驟b2。進一步地,所述步驟b3具體包括步驟b31、從新數(shù)據(jù)表中獲取一個列名,所述的新數(shù)據(jù)表是指新數(shù)據(jù)庫中的表;步驟b32、查找舊數(shù)據(jù)表是否存在與獲取的列名相同的列名,若是,執(zhí)行步驟b33,若否,則執(zhí)行步驟b34,所述舊數(shù)據(jù)表是指舊數(shù)據(jù)庫中的表;
步驟b33、組裝升級語句;步驟b34、判斷是否已經(jīng)獲取完新數(shù)據(jù)表中所有列名,若是,則執(zhí)行步驟b4,若否,從數(shù)據(jù)表中獲取下一個列名之后返回步驟b32。如圖2所示為本發(fā)明另一具體實施例的方法流程示意圖。所述包括步驟I、根據(jù)建表語句建立新數(shù)據(jù)庫;步驟2、從新數(shù)據(jù)庫中獲取一個表名,所述新數(shù)據(jù)庫為欲升級的新版本數(shù)據(jù)庫;步驟3、查找舊數(shù)據(jù)庫中是否存在與獲取的表名相同的表名,若是,則執(zhí)行步驟4,若否,則執(zhí)行步驟8,所述的舊數(shù)據(jù)庫為舊版本數(shù)據(jù)庫;步驟4、從新數(shù)據(jù)表中獲取一個列名,所述的新數(shù)據(jù)表為新數(shù)據(jù)庫中的數(shù)據(jù)表; 步驟5、查找舊數(shù)據(jù)表中是否存在與獲取的列名相同的列名,若是,則執(zhí)行步驟6,若否則執(zhí)行步驟7,所述的舊數(shù)據(jù)表為舊數(shù)據(jù)庫中的數(shù)據(jù)表;步驟6、組裝升級語句;步驟7、判斷是否已經(jīng)獲取完新數(shù)據(jù)表中所有列名,若是,則執(zhí)行步驟8,若否,則從數(shù)據(jù)表中獲取下一個列名之后返回步驟5 ;步驟8、判斷是否已經(jīng)獲取完新數(shù)據(jù)庫中所有的表名,若是,則執(zhí)行步驟9,若否,則從數(shù)據(jù)庫中獲取下一個表名之后返回步驟3 ;步驟9、對新數(shù)據(jù)庫批量執(zhí)行所述升級語句;步驟10、用新數(shù)據(jù)庫替換舊數(shù)據(jù)庫,完成數(shù)據(jù)庫的升級。 請參考圖3,本發(fā)明實施例同時提供一種實現(xiàn)數(shù)據(jù)庫升級的裝置,適用于關(guān)系型數(shù)據(jù)庫,其特征在于,所述裝置包括創(chuàng)建模塊,用于建立新數(shù)據(jù)庫,所述新數(shù)據(jù)庫為新版本數(shù)據(jù)庫;在數(shù)據(jù)庫升級的初始階段,首先創(chuàng)建模塊根據(jù)數(shù)據(jù)庫的建表語句建立新的數(shù)據(jù)庫,所述新數(shù)據(jù)庫為計劃升級的新版本數(shù)據(jù)庫。升級模塊,用于獲取新數(shù)據(jù)庫與舊數(shù)據(jù)庫的共有結(jié)構(gòu),根據(jù)所述共有結(jié)構(gòu)組裝升級語句,所述舊數(shù)據(jù)庫為舊版本數(shù)據(jù)庫;所述共有結(jié)構(gòu)為新數(shù)據(jù)庫和舊數(shù)據(jù)庫中表名相同的數(shù)據(jù)表中相同的列名。關(guān)系型數(shù)據(jù)庫是由二維表及其之間的聯(lián)系組成的一個數(shù)據(jù)組織,每一張二維表都有一個表名。每一個二維表有若干行和列組成,行在數(shù)據(jù)庫中用元組表示,列在數(shù)據(jù)庫中用字段表示,指每個實體的屬性,用于標(biāo)識元組。當(dāng)新數(shù)據(jù)庫建立完成之后,同時打開新數(shù)據(jù)庫和舊數(shù)據(jù)庫,升級模塊獲取新數(shù)據(jù)庫與舊數(shù)據(jù)庫的共有結(jié)構(gòu),即獲取新數(shù)據(jù)庫和舊數(shù)據(jù)庫中表名相同的數(shù)據(jù)表中相同的列名,然后組裝與所述共有結(jié)構(gòu)相對應(yīng)的升級語句,例如insert或replace語句,但并不限于此語句。執(zhí)行模塊,用于對新數(shù)據(jù)庫批量執(zhí)行所述升級語句;當(dāng)獲取完成新數(shù)據(jù)庫和舊數(shù)據(jù)庫中全部的共有結(jié)構(gòu),并組裝所有與所述共有結(jié)構(gòu)相對應(yīng)的升級語句之后,執(zhí)行模塊對新數(shù)據(jù)庫批量執(zhí)行所述的升級語句,進行升級。替換模塊,用于新數(shù)據(jù)庫替換舊數(shù)據(jù)庫,完成數(shù)據(jù)庫的升級。當(dāng)執(zhí)行升級語句完成之后,舊數(shù)據(jù)庫中的數(shù)據(jù)已經(jīng)拷貝到新數(shù)據(jù)庫中,因此替換模塊用新數(shù)據(jù)庫替換舊數(shù)據(jù)庫,完成數(shù)據(jù)庫的升級。進一步地,請參考圖4,所述的一種實現(xiàn)數(shù)據(jù)庫升級的裝置,其中所述升級模塊進一步包括獲取模塊,用于從新數(shù)據(jù)庫中獲取一個表名;查找模塊,用于查找舊數(shù)據(jù)庫是否存在與獲取的表名相同的表名,若是,則觸發(fā)組裝升級模塊,若否,則觸發(fā)判斷模塊;組裝升級模塊,用于根據(jù)新數(shù)據(jù)庫和舊數(shù)據(jù)庫中,具有所述相同的表名的數(shù)據(jù)表中的相同列名,組裝升級語句;判斷模塊,用于判斷是否已經(jīng)獲取完新數(shù)據(jù)庫中的所有表名,若是,則轉(zhuǎn)至執(zhí)行模塊,若否,從新數(shù)據(jù)庫中獲取下一個表名后轉(zhuǎn)至查找模塊。進一步地,請參考圖5,所述的一種實現(xiàn)數(shù)據(jù)庫升級的裝置中的升級模塊,其中所述組裝升級模塊進一步包括·
獲取子模塊,用于從新數(shù)據(jù)表中獲取一個列名,所述的新數(shù)據(jù)表是指新數(shù)據(jù)庫中的表;查找子模塊,用于查找舊數(shù)據(jù)表是否存在與獲取的列名相同的列名,若是,觸發(fā)組裝升級子模塊,若否,觸發(fā)判斷子模塊,所述舊數(shù)據(jù)表是指舊數(shù)據(jù)庫中的表;組裝升級子模塊,用于組裝升級語句;判斷子模塊,用于判斷是否已經(jīng)獲取完新數(shù)據(jù)表中所有列名,若是,則轉(zhuǎn)至判斷模塊,若否,從數(shù)據(jù)表中獲取下一個列名之后返回查找子模塊。以上所述僅僅為本發(fā)明較佳的實現(xiàn)方式,任何基于本發(fā)明精神所做出的等同的修改皆應(yīng)涵蓋于本發(fā)明的權(quán)利要求范圍中。
權(quán)利要求
1.一種實現(xiàn)數(shù)據(jù)庫升級的方法,適用于關(guān)系型數(shù)據(jù)庫,其特征在于,所述方法包括 步驟a、建立新數(shù)據(jù)庫,所述新數(shù)據(jù)庫為新版本數(shù)據(jù)庫; 步驟b、獲取新數(shù)據(jù)庫與舊數(shù)據(jù)庫的共有結(jié)構(gòu),根據(jù)所述共有結(jié)構(gòu)組裝升級語句,所述舊數(shù)據(jù)庫為舊版本數(shù)據(jù)庫; 步驟C、對新數(shù)據(jù)庫批量執(zhí)行所述升級語句; 步驟d、用新數(shù)據(jù)庫替換舊數(shù)據(jù)庫,完成數(shù)據(jù)庫的升級。
2.如權(quán)利要求I所述的方法,其特征在于 所述共有結(jié)構(gòu)為新數(shù)據(jù)庫和舊數(shù)據(jù)庫中表名相同的數(shù)據(jù)表中相同的列名。
3.如權(quán)利要求I所述的方法,其特征在于,所述步驟b具體包括 步驟bl、從新數(shù)據(jù)庫中獲取一個表名; 步驟b2、查找舊數(shù)據(jù)庫是否存在與獲取的表名相同的表名,若是,執(zhí)行步驟b3,若否,執(zhí)行步驟b4; 步驟b3、根據(jù)新數(shù)據(jù)庫和舊數(shù)據(jù)庫中,具有所述相同的表名的數(shù)據(jù)表中的相同列名,組裝升級語句; 步驟b4、判斷是否已經(jīng)獲取完新數(shù)據(jù)庫中的所有表名,若是,執(zhí)行步驟C,若否,從新數(shù)據(jù)庫中獲取下一個表名后返回步驟b2。
4.如權(quán)利要求3所述的方法,其特征在于,所述步驟b3具體包括 步驟b31、從新數(shù)據(jù)表中獲取一個列名,所述的新數(shù)據(jù)表是指新數(shù)據(jù)庫中的表; 步驟b32、查找舊數(shù)據(jù)表是否存在與獲取的列名相同的列名,若是,執(zhí)行步驟b33,若否,則執(zhí)行步驟b34,所述舊數(shù)據(jù)表是指舊數(shù)據(jù)庫中的表; 步驟b33、組裝升級語句; 步驟b34、判斷是否已經(jīng)獲取完新數(shù)據(jù)表中所有列名,若是,則執(zhí)行步驟b4,若否,從數(shù)據(jù)表中獲取下一個列名之后返回步驟b32。
5.一種實現(xiàn)數(shù)據(jù)庫升級的裝置,適用于關(guān)系型數(shù)據(jù)庫,其特征在于,所述裝置包括 創(chuàng)建模塊,用于建立新數(shù)據(jù)庫,所述新數(shù)據(jù)庫為新版本數(shù)據(jù)庫; 升級模塊,用于獲取新數(shù)據(jù)庫與舊數(shù)據(jù)庫的共有結(jié)構(gòu),根據(jù)所述共有結(jié)構(gòu)組裝升級語句,所述舊數(shù)據(jù)庫為舊版本數(shù)據(jù)庫; 執(zhí)行模塊,用于對新數(shù)據(jù)庫批量執(zhí)行所述升級語句; 替換模塊,用于新數(shù)據(jù)庫替換舊數(shù)據(jù)庫,完成數(shù)據(jù)庫的升級。
6.如權(quán)利要求5所述的裝置,其特征在于 所述共有結(jié)構(gòu)為新數(shù)據(jù)庫和舊數(shù)據(jù)庫中表名相同的數(shù)據(jù)表中相同的列名。
7.如權(quán)利要求5所述的裝置,其特征在于,所述升級模塊進一步包括 獲取模塊,用于從新數(shù)據(jù)庫中獲取一個表名; 查找模塊,用于查找舊數(shù)據(jù)庫是否存在與獲取的表名相同的表名,若是,則觸發(fā)組裝升級模塊,若否,則觸發(fā)判斷模塊; 組裝升級模塊,用于根據(jù)新數(shù)據(jù)庫和舊數(shù)據(jù)庫中,具有所述相同的表名的數(shù)據(jù)表中的相同列名,組裝升級語句; 判斷模塊,用于判斷是否已經(jīng)獲取完新數(shù)據(jù)庫中的所有表名,若是,則轉(zhuǎn)至執(zhí)行模塊,若否,從新數(shù)據(jù)庫中獲取下一個表名后轉(zhuǎn)至查找模塊。
8.如權(quán)利要求7所述的方法,其特征在于,所述組裝升級模塊包括 獲取子模塊,用于從新數(shù)據(jù)表中獲取一個列名,所述的新數(shù)據(jù)表是指新數(shù)據(jù)庫中的表; 查找子模塊,用于查找舊數(shù)據(jù)表是否存在與獲取的列名相同的列名,若是,觸發(fā)組裝升級子模塊,若否,觸發(fā)判斷子模塊,所述舊數(shù)據(jù)表是指舊數(shù)據(jù)庫中的表; 組裝升級子模塊,用于組裝升級語句; 判斷子模塊,用于判斷是否已經(jīng)獲取完新數(shù)據(jù)表中所有列名,若是,則轉(zhuǎn)至判斷模塊,若否,從數(shù)據(jù)表中獲取下一個列名之后返回查找子模塊。
全文摘要
本發(fā)明提供一種數(shù)據(jù)庫升級的方法和裝置。所述方法包括通過先建立新數(shù)據(jù)庫,然后獲取新數(shù)據(jù)庫與舊數(shù)據(jù)庫的共有結(jié)構(gòu),根據(jù)所述共有結(jié)構(gòu)組裝升級語句,再對新數(shù)據(jù)庫批量執(zhí)行所述升級語句,最后用新數(shù)據(jù)庫替換舊數(shù)據(jù)庫,完成數(shù)據(jù)庫的升級。通過本發(fā)明,數(shù)據(jù)庫升級之后能夠?qū)崿F(xiàn)配置兼容,且在升級過程中可不中斷業(yè)務(wù),發(fā)明方法簡便、容易使用。
文檔編號G06F17/30GK102902818SQ20121041793
公開日2013年1月30日 申請日期2012年10月26日 優(yōu)先權(quán)日2012年10月26日
發(fā)明者李飛鵬, 李常青 申請人:杭州迪普科技有限公司