欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

數(shù)據(jù)庫升級的方法及裝置與流程

文檔序號:11134105閱讀:1306來源:國知局
數(shù)據(jù)庫升級的方法及裝置與制造工藝

本申請涉及數(shù)據(jù)通信技術(shù)領(lǐng)域,尤其涉及數(shù)據(jù)庫升級的方法及裝置。



背景技術(shù):

隨著信息技術(shù)的發(fā)展,充分有效地管理和利用各類數(shù)據(jù)信息愈來愈重要。因此,數(shù)據(jù)庫在各個方面得到了廣泛的應(yīng)用。同時隨著互聯(lián)網(wǎng)的快速發(fā)展,人們愈來愈依賴于各類軟件提供的各種服務(wù),為了滿足用戶的需求,通常需要對軟件進(jìn)行升級,以增加新的功能,或者修復(fù)問題等。那么,在升級軟件的過程中,將不可避免地對該軟件的數(shù)據(jù)庫進(jìn)行升級。

現(xiàn)有技術(shù)中,在升級數(shù)據(jù)庫時,通過對比新、舊數(shù)據(jù)庫,根據(jù)對比結(jié)果,在舊數(shù)據(jù)庫中創(chuàng)建新數(shù)據(jù)中增加的數(shù)據(jù)表;對于新、舊數(shù)據(jù)庫中都存在的數(shù)據(jù)表,首先在舊數(shù)據(jù)庫中創(chuàng)建一個具有新表名的新數(shù)據(jù)表,再將舊數(shù)據(jù)庫的該數(shù)據(jù)表中的數(shù)據(jù)插入到新數(shù)據(jù)表中,最后,將舊數(shù)據(jù)庫中的該數(shù)據(jù)表重命名,并且重命名為原表名;對于僅舊數(shù)據(jù)庫中存在的數(shù)據(jù)表,則采取忽略方式。

在上述數(shù)據(jù)庫升級過程中,一方面,由于頻繁地修改舊數(shù)據(jù)庫,將增加舊數(shù)據(jù)庫損壞的風(fēng)險,若舊數(shù)據(jù)庫損壞,將導(dǎo)致無法查看數(shù)據(jù)庫配置,從而導(dǎo)致無法更新數(shù)據(jù)庫的配置,導(dǎo)致升級后的數(shù)據(jù)庫無法正常使用;另一方面,當(dāng)將舊數(shù)據(jù)表中的數(shù)據(jù)直接插入到新數(shù)據(jù)表中時,有可能會引起用戶配置丟失,無法準(zhǔn)確完成數(shù)據(jù)庫升級;又一方面,由于對僅舊數(shù)據(jù)庫中存在的數(shù)據(jù)表采取忽略方式,在數(shù)據(jù)庫升級完成后,將導(dǎo)致存在無意義的數(shù)據(jù),浪費存儲空間。



技術(shù)實現(xiàn)要素:

有鑒于此,本申請?zhí)峁┮环N數(shù)據(jù)庫升級的方法及裝置,以實現(xiàn)高效、準(zhǔn)確地升級數(shù)據(jù)庫,并且有效地避免浪費存儲空間。

具體地,本申請是通過如下技術(shù)方案實現(xiàn)的:

根據(jù)本申請實施例的第一方面,提供一種數(shù)據(jù)庫升級的方法,所述方法包括:

根據(jù)新數(shù)據(jù)庫版本信息建立新數(shù)據(jù)庫;

根據(jù)預(yù)設(shè)算法,計算得出所述新數(shù)據(jù)庫的第一摘要值,以及舊數(shù)據(jù)庫的第二摘要值;

當(dāng)所述第一摘要值與所述第二摘要值不相同時,從所述新數(shù)據(jù)庫中確定目標(biāo)數(shù)據(jù)表,所述目標(biāo)數(shù)據(jù)表為所述新數(shù)據(jù)庫中存在的與所述舊數(shù)據(jù)庫中的數(shù)據(jù)表具有相同表名的數(shù)據(jù)表;

確定所述目標(biāo)數(shù)據(jù)表中的目標(biāo)列,所述目標(biāo)列為所述目標(biāo)數(shù)據(jù)表中存在的與所述目標(biāo)數(shù)據(jù)表對應(yīng)的舊數(shù)據(jù)表中具有相同列名的列;

對所述目標(biāo)列進(jìn)行升級;

使用所述新數(shù)據(jù)庫替換所述舊數(shù)據(jù)庫。

可選的,所述預(yù)設(shè)算法包括:MD5算法,或,安全哈希算法。

可選的,所述對所述目標(biāo)列進(jìn)行升級,包括:

在確定一個所述目標(biāo)數(shù)據(jù)表中的目標(biāo)列之后,根據(jù)所述目標(biāo)列組裝升級語句;

繼續(xù)確定下一個所述目標(biāo)數(shù)據(jù)表中的目標(biāo)列,根據(jù)所述下一個所述目標(biāo)數(shù)據(jù)表中的目標(biāo)列繼續(xù)組裝所述升級語句,直至確定完所有目標(biāo)數(shù)據(jù)表中的目標(biāo)列;

對每個所述目標(biāo)數(shù)據(jù)表中的目標(biāo)列執(zhí)行所述升級語句。

可選的,所述升級語句包括:插入insert或者替換replace語句。

可選的,所述方法還包括:

當(dāng)未對所述目標(biāo)數(shù)據(jù)表中新增列的屬性設(shè)置預(yù)設(shè)默認(rèn)值時,將所述新增列的屬性設(shè)置為允許為空NULL,所述新增列為在所述目標(biāo)數(shù)據(jù)表中存在的,且在所述目標(biāo)數(shù)據(jù)表對應(yīng)的舊數(shù)據(jù)表中不存在的列。

根據(jù)本申請實施例的第二方面,本申請?zhí)峁┮环N數(shù)據(jù)庫升級的裝置,所述裝置包括:

數(shù)據(jù)庫建立模塊,用于根據(jù)新數(shù)據(jù)庫版本信息建立新數(shù)據(jù)庫;

摘要值計算模塊,用于根據(jù)預(yù)設(shè)算法,計算得出所述新數(shù)據(jù)庫的第一摘要值,以及舊數(shù)據(jù)庫的第二摘要值;

表確定模塊,用于當(dāng)所述第一摘要值與所述第二摘要值不相同時,從所述新數(shù)據(jù)庫中確定目標(biāo)數(shù)據(jù)表,所述目標(biāo)數(shù)據(jù)表為所述新數(shù)據(jù)庫中存在的與所述舊數(shù)據(jù)庫中的數(shù)據(jù)表具有相同表名的數(shù)據(jù)表;

列確定模塊,用于確定所述目標(biāo)數(shù)據(jù)表中的目標(biāo)列,所述目標(biāo)列為所述目標(biāo)數(shù)據(jù)表中存在的與所述目標(biāo)數(shù)據(jù)表對應(yīng)的舊數(shù)據(jù)表中具有相同列名的列;

升級模塊,用于對所述目標(biāo)列進(jìn)行升級;

替換模塊,用于使用所述新數(shù)據(jù)庫替換所述舊數(shù)據(jù)庫。

可選的,所述預(yù)設(shè)算法包括:MD5算法,或,安全哈希算法。

可選的,所述升級模塊,包括:

組裝子模塊,用于在確定一個所述目標(biāo)數(shù)據(jù)表中的目標(biāo)列之后,根據(jù)所述目標(biāo)列組裝升級語句;

確定子模塊,用于繼續(xù)確定下一個所述目標(biāo)數(shù)據(jù)表中的目標(biāo)列,根據(jù)所述下一個所述目標(biāo)數(shù)據(jù)表中的目標(biāo)列繼續(xù)組裝所述升級語句,直至確定完所有目標(biāo)數(shù)據(jù)表中的目標(biāo)列;

執(zhí)行子模塊,用于對每個所述目標(biāo)數(shù)據(jù)表中的目標(biāo)列執(zhí)行所述升級語句。

可選的,所述升級語句包括:插入insert或者替換replace語句。

可選的,所述裝置還包括:

屬性設(shè)置模塊:用于當(dāng)未對所述目標(biāo)數(shù)據(jù)表中新增列的屬性設(shè)置預(yù)設(shè)默認(rèn)值時,將所述新增列的屬性設(shè)置為NULL,所述新增列為所述目標(biāo)數(shù)據(jù)表中存在的,且在所述目標(biāo)數(shù)據(jù)表對應(yīng)的舊數(shù)據(jù)表中不存在的列。

由上述實施例可見,通過預(yù)設(shè)算法,計算得出新數(shù)據(jù)庫與舊數(shù)據(jù)庫各自的摘要值,比較該兩個摘要值是否一致,即可以快速確定新數(shù)據(jù)庫與舊數(shù)據(jù)庫的結(jié)構(gòu)是否完全相同;在該兩個摘要值不一致時,可以確定新數(shù)據(jù)庫與舊數(shù)據(jù)庫的結(jié)構(gòu)不完全相同,此時,繼續(xù)確定新數(shù)據(jù)庫中存在的待升級的目標(biāo)數(shù)據(jù)表,在目標(biāo)數(shù)據(jù)表中繼續(xù)確定待升級的目標(biāo)列,對目標(biāo)列進(jìn)行升級,升級完成后,使用新數(shù)據(jù)庫替換舊數(shù)據(jù)庫,即完成了數(shù)據(jù)庫的升級。由于在數(shù)據(jù)庫升級過程中,較少的修改舊數(shù)據(jù)庫,從而有效地降低了舊數(shù)據(jù)庫損壞的風(fēng)險,提高了數(shù)據(jù)庫升級的準(zhǔn)確性;并且,上述過程中,由于僅對目標(biāo)列進(jìn)行升級,從而可以有效地提高數(shù)據(jù)庫升級的效率。

附圖說明

圖1A,示例了本申請數(shù)據(jù)庫升級的方法的一個實施例流程圖;

圖1B為舊數(shù)據(jù)庫結(jié)構(gòu)的一種示例;

圖1C為新數(shù)據(jù)庫結(jié)構(gòu)的一種示例;

圖2示例了本申請數(shù)據(jù)庫升級的方法的另一個實施例流程圖;

圖3為本申請數(shù)據(jù)庫升級的裝置所在網(wǎng)絡(luò)設(shè)備的一種硬件結(jié)構(gòu)圖;

圖4示例了本申請數(shù)據(jù)庫升級的裝置的一個實施例框圖;

圖5示例了本申請數(shù)據(jù)庫升級的裝置的另一個實施例框圖。

具體實施方式

這里將詳細(xì)地對示例性實施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本申請相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本申請的一些方面相一致的裝置和方法的例子。

在本申請使用的術(shù)語是僅僅出于描述特定實施例的目的,而非旨在限制本申請。在本申請和所附權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應(yīng)當(dāng)理解,本文中使用的術(shù)語“和/或”是指并包含一個或多個相關(guān)聯(lián)的列出項目的任何或所有可能組合。

應(yīng)當(dāng)理解,盡管在本申請可能采用術(shù)語第一、第二、第三等來描述各種信息,但這些信息不應(yīng)限于這些術(shù)語。這些術(shù)語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本申請范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當(dāng)……時”或“響應(yīng)于確定”。

本申請中,列舉下述實施例說明本申請?zhí)峁┑臄?shù)據(jù)庫升級的方法。

請參見圖1A,示例了本申請數(shù)據(jù)庫升級的方法的一個實施例流程圖,圖1B為舊數(shù)據(jù)庫結(jié)構(gòu)的一種示例,圖1C為新數(shù)據(jù)庫結(jié)構(gòu)的一種示例,圖1A所示的方法可以包括以下步驟:

步驟S101:根據(jù)新數(shù)據(jù)庫版本信息建立新數(shù)據(jù)庫。

以軟件升級過程中,對該軟件的數(shù)據(jù)庫進(jìn)行升級為例:網(wǎng)絡(luò)設(shè)備可以從該軟件集成商服務(wù)器中獲取軟件升級包,該軟件升級包中可以包括該軟件對應(yīng)的新數(shù)據(jù)庫版本信息。從而,網(wǎng)絡(luò)設(shè)備則可以根據(jù)新數(shù)據(jù)庫版本信息建立新數(shù)據(jù)庫,例如,建立如圖1C所示的數(shù)據(jù)庫。具體是如何根據(jù)新數(shù)據(jù)庫版本信息建立新數(shù)據(jù)庫的,可以參見現(xiàn)有技術(shù)中的描述,本申請對此不再詳細(xì)贅述。

步驟S102:根據(jù)預(yù)設(shè)算法,計算得出所述新數(shù)據(jù)庫的第一摘要值,以及舊數(shù)據(jù)庫的第二摘要值。

在本申請中,可以按照預(yù)設(shè)算法,分別計算得出新數(shù)據(jù)庫結(jié)構(gòu)與舊數(shù)據(jù)庫結(jié)構(gòu)各自的摘要值,該摘要值可以表示數(shù)據(jù)庫結(jié)構(gòu)的摘要信息,當(dāng)兩個數(shù)據(jù)庫的結(jié)構(gòu)不完全相同時,那么,該兩個數(shù)據(jù)庫結(jié)構(gòu)的摘要值也不相同。為了描述方便,可以將新數(shù)據(jù)庫的摘要值稱為第一摘要值,舊數(shù)據(jù)庫的摘要值稱為第二摘要值。

在一實施例中,所述預(yù)設(shè)算法可以包括MD5(Message-Digest Algorithm 5,消息摘要算法第五版)算法,或者安全哈希算法。具體如何根據(jù)該兩種算法計算得出數(shù)據(jù)庫結(jié)構(gòu)的摘要值,可以參見現(xiàn)有技術(shù)中的描述,本申請對此不再詳細(xì)贅述。

可以理解的是,上述實施例所提的算法僅僅作為舉例,本申請對此并不作限制。

步驟S103:當(dāng)所述第一摘要值與所述第二摘要值不相同時,從所述新數(shù)據(jù)庫中確定目標(biāo)數(shù)據(jù)表,所述目標(biāo)數(shù)據(jù)表為所述新數(shù)據(jù)庫中存在的與所述舊數(shù)據(jù)庫中的數(shù)據(jù)表具有相同表名的數(shù)據(jù)表。

當(dāng)新數(shù)據(jù)庫的第一摘要值與舊數(shù)據(jù)庫的第二摘要值不相同時,即可以認(rèn)為新數(shù)據(jù)庫與舊數(shù)據(jù)庫的結(jié)構(gòu)不完全相同。

在確定新數(shù)據(jù)庫與舊數(shù)據(jù)庫的結(jié)構(gòu)不完成相同時,在本申請中,首先可以依次獲取新數(shù)據(jù)庫中的每個新數(shù)據(jù)表,根據(jù)該新數(shù)據(jù)表的表名查找舊數(shù)據(jù)庫,當(dāng)在舊數(shù)據(jù)庫中查找到具有該表名的舊數(shù)據(jù)表時,可以將該新數(shù)據(jù)表作為待升級的目標(biāo)數(shù)據(jù)表。

例如,在圖1C所示例的新數(shù)據(jù)庫中,獲取到的新數(shù)據(jù)表包括“學(xué)生信息表”、“課程信息表”、“成績表”、“系別信息表”,依次根據(jù)該4個新數(shù)據(jù)表的表名查找圖1B所示例的舊數(shù)據(jù)庫,根據(jù)查找結(jié)果,可以將圖1C所示例的新數(shù)據(jù)表“學(xué)生信息表”、“課程信息表”、“成績表”作為待升級的目標(biāo)數(shù)據(jù)表。

步驟S104:確定所述目標(biāo)數(shù)據(jù)表中的目標(biāo)列,所述目標(biāo)列為所述目標(biāo)數(shù)據(jù)表中存在的與所述目標(biāo)數(shù)據(jù)表對應(yīng)的舊數(shù)據(jù)表中具有相同列名的列。

首先說明,在本申請中,為了描述方便,可以將舊數(shù)據(jù)庫中的存在的,與步驟S103中確定的目標(biāo)數(shù)據(jù)表具有相同表名的數(shù)據(jù)表稱為該目標(biāo)數(shù)據(jù)表對應(yīng)的舊數(shù)據(jù)表,例如,可以將圖1B所示例的“學(xué)生信息表”稱為圖1C所示例的“學(xué)生信息表”所對應(yīng)的舊數(shù)據(jù)表。

在確定新數(shù)據(jù)庫中的目標(biāo)數(shù)據(jù)表之后,根據(jù)該目標(biāo)數(shù)據(jù)表中的列查找該目標(biāo)數(shù)據(jù)表對應(yīng)的舊數(shù)據(jù)表,若在舊數(shù)據(jù)表中查找到與該目標(biāo)數(shù)據(jù)表中的列具有相同列名的列時,則可以將該目標(biāo)數(shù)據(jù)表中的列作為待升級的目標(biāo)列。

例如,以圖1C中示例的“學(xué)生信息表”,以及圖1B中示例的“學(xué)生信息表”為例,根據(jù)圖1C的“學(xué)生信息表”中的列查找圖1B的“學(xué)生信息表”。根據(jù)查找結(jié)果,可以得出,圖1C的“學(xué)生信息表”中包括的目標(biāo)列為“學(xué)號”、“姓名”、“性別”、“聯(lián)系方式”。

步驟S105:對所述目標(biāo)列進(jìn)行升級。

當(dāng)執(zhí)行完步驟S104,確定目標(biāo)列之后,則可以對該目標(biāo)列進(jìn)行升級。

例如,根據(jù)圖1B所示例的舊數(shù)據(jù)庫中的,“學(xué)生信息表”中的“學(xué)號”、“姓名”“性別”、“聯(lián)系方式”這四列的數(shù)據(jù),更新圖1C所示例的新數(shù)據(jù)庫中的,“學(xué)生信息表”中的“學(xué)號”、“姓名”“性別”、“聯(lián)系方式”這四列的數(shù)據(jù)。

此外,需要說明的是,在本申請中,當(dāng)根據(jù)新數(shù)據(jù)庫中的新數(shù)據(jù)表查找舊數(shù)據(jù)庫,在舊數(shù)據(jù)庫中未查找到與該新數(shù)據(jù)表具有相同表名的數(shù)據(jù)表時,可以認(rèn)為該新數(shù)據(jù)表是新數(shù)據(jù)庫中的新增表,可以不對新增表進(jìn)行升級。從而,可以提高對數(shù)據(jù)庫進(jìn)行升級的效率。

例如,相較于圖1B所示例的舊數(shù)據(jù)庫,圖1C所示例的新數(shù)據(jù)庫中的“系別信息表”為新增表。那么,在數(shù)據(jù)庫升級過程中可以不對該“系別信息表”進(jìn)行處理。

此外,在本申請中,當(dāng)根據(jù)目標(biāo)數(shù)據(jù)表中的列查找該目標(biāo)數(shù)據(jù)表對應(yīng)的舊數(shù)據(jù)表,在舊數(shù)據(jù)表中未查找到與該目標(biāo)數(shù)據(jù)表中的列具有相同列名的列時,可以認(rèn)為該目標(biāo)數(shù)據(jù)表中的列為新增列,可以不對新增列進(jìn)行升級。從而,可以提高對數(shù)據(jù)庫進(jìn)行升級的效率。

例如,相較于圖1B所示例的舊數(shù)據(jù)庫,圖1C所示例的新數(shù)據(jù)庫中的“學(xué)生信息表”中的“系別”列為新增列。那么,在數(shù)據(jù)庫升級過程中可以不對該“系別”列進(jìn)行處理。

需要說明的是,可以將新數(shù)據(jù)庫中新增列的屬性設(shè)置為預(yù)設(shè)的默認(rèn)值,若未對新增列的屬性預(yù)設(shè)默認(rèn)值,則可以將新增列的屬性設(shè)置為系統(tǒng)默認(rèn)值NULL,即允許該列的值為空,從而可以避免在對該新增列插入空數(shù)據(jù)時,導(dǎo)致數(shù)據(jù)庫升級失敗。

此外,本申請中,對于數(shù)據(jù)庫結(jié)構(gòu)中的觸發(fā)器、索引、存儲過程等,可以采取忽略的方式,即可以認(rèn)為新數(shù)據(jù)庫中的觸發(fā)器、索引、存儲過程等為標(biāo)準(zhǔn)的,正確的,在數(shù)據(jù)庫升級的過程中,可以不對觸發(fā)器、索引、存儲過程等進(jìn)行處理。從而,可以簡化數(shù)據(jù)庫升級的過程,使得數(shù)據(jù)庫升級更為高效。

此外,在本申請中,當(dāng)確定舊數(shù)據(jù)庫中存在的舊數(shù)據(jù)表與新數(shù)據(jù)庫中的新數(shù)據(jù)表均具有不相同的表名時,可以認(rèn)為新數(shù)據(jù)庫中不再需要該舊數(shù)據(jù)表,此時,可以采取忽略方式,即對舊數(shù)據(jù)庫中的數(shù)據(jù)表不作處理。從而提高數(shù)據(jù)庫升級的效率。

步驟S106:使用所述新數(shù)據(jù)庫替換所述舊數(shù)據(jù)庫。

當(dāng)執(zhí)行完步驟S105,在本步驟中,使用新數(shù)據(jù)庫替換舊數(shù)據(jù)庫,即完成數(shù)據(jù)庫的升級。

由于使用新數(shù)據(jù)庫替換舊數(shù)據(jù)庫,從而,在數(shù)據(jù)庫升級完成后,舊數(shù)據(jù)庫中的數(shù)據(jù)信息將不存在,從而有效地避免浪費存儲空間。

由上述實施例可見,通過預(yù)設(shè)算法,計算得出新數(shù)據(jù)庫與舊數(shù)據(jù)庫各自的摘要值,比較該兩個摘要值是否一致,即可以快速確定新數(shù)據(jù)庫與舊數(shù)據(jù)庫的結(jié)構(gòu)是否完全相同;在該兩個摘要值不一致時,可以確定新數(shù)據(jù)庫與舊數(shù)據(jù)庫的結(jié)構(gòu)不完全相同,此時,繼續(xù)確定新數(shù)據(jù)庫中存在的待升級的目標(biāo)數(shù)據(jù)表,在目標(biāo)數(shù)據(jù)表中繼續(xù)確定待升級的目標(biāo)列,對目標(biāo)列進(jìn)行升級,升級完成后,使用新數(shù)據(jù)庫替換舊數(shù)據(jù)庫,即完成了數(shù)據(jù)庫的升級。由于在數(shù)據(jù)庫升級過程中,較少的修改舊數(shù)據(jù)庫,從而有效地降低了舊數(shù)據(jù)庫損壞的風(fēng)險,提高了數(shù)據(jù)庫升級的準(zhǔn)確性;并且,上述過程中,由于僅對目標(biāo)列進(jìn)行升級,從而可以有效地提高數(shù)據(jù)庫升級的效率。

請參見圖2,示例了本申請數(shù)據(jù)庫升級的方法的另一個實施例流程圖,該圖2所示的流程在上述圖1A所示流程的基礎(chǔ)上,可以包括以下步驟:

步驟S201:根據(jù)新數(shù)據(jù)庫版本信息建立新數(shù)據(jù)庫。

步驟S202:根據(jù)預(yù)設(shè)算法,計算得出所述新數(shù)據(jù)庫的第一摘要值,以及舊數(shù)據(jù)庫的第二摘要值。

步驟S203:當(dāng)所述第一摘要值與所述第二摘要值不相同時,從所述新數(shù)據(jù)庫中確定目標(biāo)數(shù)據(jù)表,所述目標(biāo)數(shù)據(jù)表為所述新數(shù)據(jù)庫中存在的與所述舊數(shù)據(jù)庫中的數(shù)據(jù)表具有相同表名的數(shù)據(jù)表。

步驟S201至步驟S203的描述,可以參見上述圖1A所示的步驟S101至步驟S103中的詳細(xì)描述,本申請對此不再詳細(xì)贅述。

步驟S204:確定其中一個所述目標(biāo)數(shù)據(jù)表中的目標(biāo)列,所述目標(biāo)列為所述目標(biāo)數(shù)據(jù)表中存在的與所述目標(biāo)數(shù)據(jù)表對應(yīng)的舊數(shù)據(jù)表中具有相同列名的列。

步驟S205:在確定其中一個所述目標(biāo)數(shù)據(jù)表中的目標(biāo)列之后,根據(jù)所述目標(biāo)列組裝升級語句。

步驟S206:繼續(xù)確定下一個所述目標(biāo)數(shù)據(jù)表中的目標(biāo)列,根據(jù)所述下一個所述目標(biāo)數(shù)據(jù)表中的目標(biāo)列繼續(xù)組裝所述升級語句,直至確定完所有目標(biāo)數(shù)據(jù)表中的目標(biāo)列。

在執(zhí)行完步驟S203,確定新數(shù)據(jù)庫中的所有目標(biāo)數(shù)據(jù)表之后,在步驟S204中,可以從所有的目標(biāo)數(shù)據(jù)表中隨機(jī)選擇其中一個目標(biāo)數(shù)據(jù)表,例如“學(xué)生信息表”,確定該目標(biāo)數(shù)據(jù)表中的目標(biāo)列。確定目標(biāo)數(shù)據(jù)表中的目標(biāo)列的過程可以參見上述步驟S104中的相關(guān)描述,本申請對此不再詳細(xì)贅述。

當(dāng)確定目標(biāo)數(shù)據(jù)表中的目標(biāo)列之后,在步驟S205中,可以根據(jù)目標(biāo)列組裝升級語句。

在一個可選的實現(xiàn)方式中,該升級語句可以包括“插入insert或者替換replace”語句,該“插入insert或者替換replace”語句可以用于指示將舊數(shù)據(jù)庫中數(shù)據(jù)插入對應(yīng)的新數(shù)據(jù)庫的目標(biāo)列中,或者使用舊數(shù)據(jù)庫中的數(shù)據(jù)替換新數(shù)據(jù)庫的目標(biāo)列中的數(shù)據(jù)。通過該升級語句,可以有效地避免在新數(shù)據(jù)庫的目標(biāo)列中重復(fù)插入相同數(shù)據(jù),有效地避免因數(shù)據(jù)庫數(shù)據(jù)錯誤導(dǎo)致用戶配置錯誤,使得數(shù)據(jù)庫升級更為準(zhǔn)確。

可以理解的是,上述僅以升級語句中包括“插入insert或者替換replace”語句為例,實際應(yīng)用中還可以包括其它語句,本申請對此不作限制。

在根據(jù)目標(biāo)列組裝升級語句后,繼續(xù)確定下一個目標(biāo)數(shù)據(jù)表中的目標(biāo)列,根據(jù)該目標(biāo)列繼續(xù)組裝上述的升級語句,直至確定完所有目標(biāo)數(shù)據(jù)表中的目標(biāo)列,至此組裝完成升級語句。

步驟S207:對每個所述目標(biāo)數(shù)據(jù)表中的目標(biāo)列執(zhí)行所述升級語句。

對每個目標(biāo)數(shù)據(jù)表中的目標(biāo)列執(zhí)行所述升級語句,即可以對每個目標(biāo)數(shù)據(jù)表中的目標(biāo)列進(jìn)行數(shù)據(jù)升級與維護(hù)。

步驟S208:使用所述新數(shù)據(jù)庫替換所述舊數(shù)據(jù)庫。

由上述實施例可見,通過預(yù)設(shè)算法,計算得出新數(shù)據(jù)庫與舊數(shù)據(jù)庫各自的摘要值,比較該兩個摘要值是否一致,即可以快速確定新數(shù)據(jù)庫與舊數(shù)據(jù)庫的結(jié)構(gòu)是否完全相同;在該兩個摘要值不一致時,可以確定新數(shù)據(jù)庫與舊數(shù)據(jù)庫的結(jié)構(gòu)不完全相同,此時,繼續(xù)確定新數(shù)據(jù)庫中存在的待升級的目標(biāo)數(shù)據(jù)表,在目標(biāo)數(shù)據(jù)表中繼續(xù)確定待升級的目標(biāo)列,根據(jù)目標(biāo)列組裝升級語句,直至確定每個目標(biāo)數(shù)據(jù)表的所有目標(biāo)列。執(zhí)行組裝的升級語句,對每個目標(biāo)數(shù)據(jù)表中的目標(biāo)列進(jìn)行升級,可以實現(xiàn)對新數(shù)據(jù)庫中的新數(shù)據(jù)表進(jìn)行批量升級,從而可以有效地提高數(shù)據(jù)庫升級的效率。

與前述數(shù)據(jù)庫升級的方法的實施例相對應(yīng),本申請還提供了數(shù)據(jù)庫升級的裝置的實施例。

本申請數(shù)據(jù)庫升級的裝置的實施例可以應(yīng)用在網(wǎng)絡(luò)設(shè)備上。裝置實施例可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實現(xiàn)。以軟件實現(xiàn)為例,作為一個邏輯意義上的裝置,是通過其所在網(wǎng)絡(luò)設(shè)備的處理器將非易失性存儲器中對應(yīng)的計算機(jī)程序指令讀取到內(nèi)存中運行形成的。從硬件層面而言,如圖3所示,為本申請數(shù)據(jù)庫升級的裝置所在網(wǎng)絡(luò)設(shè)備的一種硬件結(jié)構(gòu)圖,除了圖3所示的處理器31、內(nèi)存32、網(wǎng)絡(luò)接口33、以及非易失性存儲器34之外,實施例中裝置所在的網(wǎng)絡(luò)設(shè)備通常根據(jù)該網(wǎng)絡(luò)設(shè)備的實際功能,還可以包括其他硬件,對此不再贅述。

請參考圖4,示例了本申請數(shù)據(jù)庫升級的裝置的一個實施例框圖,該裝置可以包括:數(shù)據(jù)庫建立模塊41、摘要值計算模塊42、表確定模塊43、列確定模塊44、升級模塊45、替換模塊46。

該數(shù)據(jù)庫建立模塊41,可以用于根據(jù)新數(shù)據(jù)庫版本信息建立新數(shù)據(jù)庫;

該摘要值計算模塊42,可以用于根據(jù)預(yù)設(shè)算法,計算得出所述新數(shù)據(jù)庫的第一摘要值,以及舊數(shù)據(jù)庫的第二摘要值;

該表確定模塊43,可以用于當(dāng)所述第一摘要值與所述第二摘要值不相同時,從所述新數(shù)據(jù)庫中確定目標(biāo)數(shù)據(jù)表,所述目標(biāo)數(shù)據(jù)表為所述新數(shù)據(jù)庫中存在的與所述舊數(shù)據(jù)庫中的數(shù)據(jù)表具有相同表名的數(shù)據(jù)表;

該列確定模塊44,可以用于確定所述目標(biāo)數(shù)據(jù)表中的目標(biāo)列,所述目標(biāo)列為所述目標(biāo)數(shù)據(jù)表中存在的與所述目標(biāo)數(shù)據(jù)表對應(yīng)的舊數(shù)據(jù)表中具有相同列名的列;

該升級模塊45,可以用于對所述目標(biāo)列進(jìn)行升級;

該替換模塊46,可以用于使用所述新數(shù)據(jù)庫替換所述舊數(shù)據(jù)庫。

在一實施例中,所述預(yù)設(shè)算法包括:MD5算法,或,安全哈希算法。

請參考圖5,示例了本申請數(shù)據(jù)庫升級的裝置的另一個實施例框圖,該圖5所示的裝置在上述圖4所示裝置的基礎(chǔ)上,其中,升級模塊45可以包括:組裝子模塊451、確定子模塊452、執(zhí)行子模塊453。

其中,該組裝子模塊451,可以用于在確定一個所述目標(biāo)數(shù)據(jù)表中的目標(biāo)列之后,根據(jù)所述目標(biāo)列組裝升級語句;

該確定子模塊452,可以用于繼續(xù)確定下一個所述目標(biāo)數(shù)據(jù)表中的目標(biāo)列,根據(jù)所述下一個所述目標(biāo)數(shù)據(jù)表中的目標(biāo)列繼續(xù)組裝所述升級語句,直至確定完所有目標(biāo)數(shù)據(jù)表中的目標(biāo)列;

該執(zhí)行子模塊453,可以用于對每個所述目標(biāo)列執(zhí)行所述升級語句。

在一實施例中,所述升級語句可以包括:插入insert或者替換replace語句。

在另一實施例中,所述裝置還可以包括:屬性設(shè)置模塊。

該屬性設(shè)置模塊,可以用于當(dāng)未對所述目標(biāo)數(shù)據(jù)表中新增列的屬性設(shè)置預(yù)設(shè)默認(rèn)值時,將所述新增列的屬性設(shè)置為NULL,所述新增列為所述目標(biāo)數(shù)據(jù)表中存在的,且在所述目標(biāo)數(shù)據(jù)表對應(yīng)的舊數(shù)據(jù)表中不存在的列。

上述裝置中各個單元的功能和作用的實現(xiàn)過程具體詳見上述方法中對應(yīng)步驟的實現(xiàn)過程,在此不再贅述。

對于裝置實施例而言,由于其基本對應(yīng)于方法實施例,所以相關(guān)之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本申請方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。

以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請保護(hù)的范圍之內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
长宁县| 凤山县| 崇州市| 利川市| 英德市| 油尖旺区| 云和县| 乌兰浩特市| 昭通市| 岳西县| 永登县| 贵阳市| 安义县| 鸡泽县| 钦州市| 溧阳市| 舒兰市| 丹棱县| 昭觉县| 景宁| 玉门市| 河津市| 双城市| 砀山县| 金溪县| 莱芜市| 丰城市| 鹿泉市| 盱眙县| 漾濞| 凤凰县| 苗栗市| 平度市| 长岛县| 平度市| 山西省| 丹凤县| 巴林左旗| 顺义区| 仁化县| 高清|