国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種設(shè)備跨版本升級方法和裝置制造方法

      文檔序號:6546436閱讀:210來源:國知局
      一種設(shè)備跨版本升級方法和裝置制造方法
      【專利摘要】本發(fā)明提供了一種設(shè)備跨版本升級方法和裝置,其中,所述方法包括:生成與數(shù)據(jù)庫中的舊版本數(shù)據(jù)表對應(yīng)的第一數(shù)據(jù)庫文件;運(yùn)行新版本軟件,并在數(shù)據(jù)庫中創(chuàng)建與新版本軟件相對應(yīng)的新版本數(shù)據(jù)表,實(shí)時(shí)接收對新版本數(shù)據(jù)表的操作;生成與新版本數(shù)據(jù)表對應(yīng)的第二數(shù)據(jù)庫文件;對第一數(shù)據(jù)庫文件和第二數(shù)據(jù)庫文件中存儲的表結(jié)構(gòu)信息進(jìn)行比對,獲得表結(jié)構(gòu)差異信息;依據(jù)表結(jié)構(gòu)差異信息和第一數(shù)據(jù)庫文件中的所述舊版本數(shù)據(jù)表中的數(shù)據(jù),生成新版本數(shù)據(jù)表中的數(shù)據(jù);將生成的新版本數(shù)據(jù)表中的數(shù)據(jù)導(dǎo)入新版本數(shù)據(jù)表。通過本發(fā)明,能夠?qū)崟r(shí)繼承升級過程中的產(chǎn)生的數(shù)據(jù),同時(shí)還實(shí)現(xiàn)了設(shè)備內(nèi)部的版本升級,避免了多余的版本升級處理流程。
      【專利說明】一種設(shè)備跨版本升級方法和裝置
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,特別是涉及一種設(shè)備跨版本升級方法和裝置。
      【背景技術(shù)】
      [0002]基于嵌入式Mysql數(shù)據(jù)庫的電信設(shè)備跨版本升級,基本分為版本下載、升級任務(wù)構(gòu)造和版本升級三個(gè)過程。其中,版本升級過程分為軟件版本升級和數(shù)據(jù)升級兩個(gè)部分。在跨版本進(jìn)行升級時(shí),Mysql數(shù)據(jù)庫中的數(shù)據(jù)表結(jié)構(gòu)在升級前后會發(fā)生變化,而由于Mysql數(shù)據(jù)庫不具備像Oracle等大型數(shù)據(jù)庫具有自動升級功能,因此,嵌入式設(shè)備對Mysql數(shù)據(jù)庫中數(shù)據(jù)進(jìn)行跨版本升級是數(shù)據(jù)升級的難點(diǎn)。
      [0003]現(xiàn)有的兩種基于嵌入式Mysql數(shù)據(jù)庫的電信設(shè)備的跨版本數(shù)據(jù)升級方法如下:
      [0004]一種為人工制作數(shù)據(jù)方法,即人工使用Mysql數(shù)據(jù)庫客戶端導(dǎo)出待升級版本數(shù)據(jù)文件,根據(jù)新版本的數(shù)據(jù)表結(jié)構(gòu)對導(dǎo)出的待升級數(shù)據(jù)文件進(jìn)行修改,制作成符合新版本數(shù)據(jù)表結(jié)構(gòu)的數(shù)據(jù)文件。把修改后的數(shù)據(jù)文件打包到最終的升級版本包中,此時(shí),最終的升級版本包包括軟件版本和數(shù)據(jù)文件。然后,按照基本升級流程對電信設(shè)備進(jìn)行升級。
      [0005]另一種為臨時(shí)表過渡方法,即使用工具分析升級前后的數(shù)據(jù)表結(jié)構(gòu)差異,把分析出來的數(shù)據(jù)表差異部分生成差異臨時(shí)表作為過渡導(dǎo)入到數(shù)據(jù)庫中;再使用工具把表結(jié)構(gòu)無變化的數(shù)據(jù)表和表結(jié)構(gòu)變化的數(shù)據(jù)表以及相關(guān)的數(shù)據(jù)最終組合為升級后的數(shù)據(jù)表結(jié)構(gòu)和數(shù)據(jù)。
      [0006]現(xiàn)有的人工制作數(shù)據(jù)方法,一方面,由于需要人工對Mysql數(shù)據(jù)庫中數(shù)據(jù)表結(jié)構(gòu)根據(jù)升級后的數(shù)據(jù)表結(jié)構(gòu)進(jìn)行離線修改,因此效率低、易出錯。另一方面,由于對數(shù)據(jù)表結(jié)構(gòu)的修改是離線進(jìn)行的,而此時(shí),電信設(shè)備仍是在運(yùn)行,那么就會造成電信設(shè)備運(yùn)行過程中的產(chǎn)生的動態(tài)數(shù)據(jù)無法在修改的數(shù)據(jù)中繼承,從而造成動態(tài)數(shù)據(jù)損耗。
      [0007]而臨時(shí)表過渡方法雖然通過使用工具解放了人力,比人工制作數(shù)據(jù)效率有所改善,但因?yàn)椴町惻R時(shí)表是由工具分析得來,因此軟件版本不支持對差異臨時(shí)表進(jìn)行相關(guān)操作。這就使得新版本數(shù)據(jù)升級完成前,新軟件版本無法動態(tài)對數(shù)據(jù)庫中的數(shù)據(jù)表信息進(jìn)行控制,那么在此期間生成的數(shù)據(jù)就無法繼承,同樣也會造成動態(tài)數(shù)據(jù)損耗。再就是,臨時(shí)表過渡方法需要人為將數(shù)據(jù)信息導(dǎo)出,并將組合后的數(shù)據(jù)導(dǎo)入,不能在電信設(shè)備內(nèi)部完成,帶來多余的處理流程。

      【發(fā)明內(nèi)容】

      [0008]本發(fā)明提供了一種設(shè)備版本升級方法和裝置,以解決現(xiàn)有的版本升級過程中,存在的動態(tài)數(shù)據(jù)損耗以及不能在設(shè)備內(nèi)部完成版本升級的問題。
      [0009]為了解決上述問題,本發(fā)明公開了一種設(shè)備跨版本升級方法,包括:生成與數(shù)據(jù)庫中的舊版本數(shù)據(jù)表對應(yīng)的第一數(shù)據(jù)庫文件,其中,所述舊版本數(shù)據(jù)表為對應(yīng)于舊版本軟件的數(shù)據(jù)表,所述第一數(shù)據(jù)庫文件中包括:所述舊版本數(shù)據(jù)表的表結(jié)構(gòu)信息,和所述舊版本數(shù)據(jù)表中的數(shù)據(jù);運(yùn)行新版本軟件,并在所述數(shù)據(jù)庫中創(chuàng)建與所述新版本軟件相對應(yīng)的新版本數(shù)據(jù)表,實(shí)時(shí)接收對所述新版本數(shù)據(jù)表的操作;生成與所述新版本數(shù)據(jù)表對應(yīng)的第二數(shù)據(jù)庫文件,其中,所述第二數(shù)據(jù)庫文件中包括:所述新版本數(shù)據(jù)表的表結(jié)構(gòu)信息;對所述第一數(shù)據(jù)庫文件和所述第二數(shù)據(jù)庫文件中存儲的表結(jié)構(gòu)信息進(jìn)行比對,獲得表結(jié)構(gòu)差異信息;依據(jù)所述表結(jié)構(gòu)差異信息和所述第一數(shù)據(jù)庫文件中的所述舊版本數(shù)據(jù)表中的數(shù)據(jù),生成所述新版本數(shù)據(jù)表中的數(shù)據(jù);將生成的所述新版本數(shù)據(jù)表中的數(shù)據(jù)導(dǎo)入所述新版本數(shù)據(jù)表。
      [0010]優(yōu)選地,所述對所述第一數(shù)據(jù)庫文件和所述第二數(shù)據(jù)庫文件中存儲的表結(jié)構(gòu)信息進(jìn)行比對,獲得表結(jié)構(gòu)差異信息步驟包括:逐行對所述第一數(shù)據(jù)庫文件和所述第二數(shù)據(jù)庫文件中存儲的相對應(yīng)的各個(gè)數(shù)據(jù)表的表結(jié)構(gòu)信息進(jìn)行比對,獲得各個(gè)數(shù)據(jù)表的表結(jié)構(gòu)差

      [0011]優(yōu)選地,所述依據(jù)所述表結(jié)構(gòu)差異信息和所述第一數(shù)據(jù)庫文件中的所述舊版本數(shù)據(jù)表中的數(shù)據(jù),生成所述新版本數(shù)據(jù)表中的數(shù)據(jù)步驟包括:依據(jù)獲得的所述各個(gè)數(shù)據(jù)表的表結(jié)構(gòu)差異,結(jié)合所述第一數(shù)據(jù)庫文件中、各個(gè)舊版本數(shù)據(jù)表中未發(fā)生變化的表結(jié)構(gòu)部分對應(yīng)的數(shù)據(jù),和設(shè)定的、對應(yīng)于所述各個(gè)數(shù)據(jù)表的發(fā)生表結(jié)構(gòu)變化部分的默認(rèn)數(shù)據(jù),在所述第二數(shù)據(jù)庫文件中生成所述新版本數(shù)據(jù)表中的數(shù)據(jù)。
      [0012]優(yōu)選地,所述將生成的所述新版本數(shù)據(jù)表中的數(shù)據(jù)導(dǎo)入所述新版本數(shù)據(jù)表步驟包括:在使用所述第二數(shù)據(jù)庫文件中的所述新版本數(shù)據(jù)表中的數(shù)據(jù),向所述新版本數(shù)據(jù)表中導(dǎo)入數(shù)據(jù)時(shí),逐條逐字段判斷所述新版本數(shù)據(jù)表中待導(dǎo)入的字段下是否已經(jīng)存儲有數(shù)據(jù);若已存儲,則放棄該字段的導(dǎo)入;若未存儲,則將該字段對應(yīng)的數(shù)據(jù)導(dǎo)入所述新版本數(shù)據(jù)表中。
      [0013]優(yōu)選地,所述第一數(shù)據(jù)庫文件和所述第二數(shù)據(jù)庫文件均為SQL文件;所述第一數(shù)據(jù)庫文件與所述第二數(shù)據(jù)庫文件中的表結(jié)構(gòu)信息與數(shù)據(jù)信息分開存儲。
      [0014]為了解決上述問題,本發(fā)明還公開了一種設(shè)備跨版本升級裝置,包括:第一文件生成模塊,用于生成與數(shù)據(jù)庫中的舊版本數(shù)據(jù)表對應(yīng)的第一數(shù)據(jù)庫文件,其中,所述舊版本數(shù)據(jù)表為對應(yīng)于舊版本軟件的數(shù)據(jù)表,所述第一數(shù)據(jù)庫文件中包括:所述舊版本數(shù)據(jù)表的表結(jié)構(gòu)信息,和所述舊版本數(shù)據(jù)表中的數(shù)據(jù);創(chuàng)建模塊,用于運(yùn)行新版本軟件,并在所述數(shù)據(jù)庫中創(chuàng)建與所述新版本軟件相對應(yīng)的新版本數(shù)據(jù)表,實(shí)時(shí)接收對所述新版本數(shù)據(jù)表的操作;第二文件生成模塊,用于生成與所述新版本數(shù)據(jù)表對應(yīng)的第二數(shù)據(jù)庫文件,其中,所述第二數(shù)據(jù)庫文件中包括:所述新版本數(shù)據(jù)表的表結(jié)構(gòu)信息;比對模塊,用于對所述第一數(shù)據(jù)庫文件和所述第二數(shù)據(jù)庫文件中存儲的表結(jié)構(gòu)信息進(jìn)行比對,獲得表結(jié)構(gòu)差異信息;數(shù)據(jù)生成模塊,用于依據(jù)所述表結(jié)構(gòu)差異信息和所述第一數(shù)據(jù)庫文件中的所述舊版本數(shù)據(jù)表中的數(shù)據(jù),生成所述新版本數(shù)據(jù)表中的數(shù)據(jù);數(shù)據(jù)導(dǎo)入模塊,用于將生成的所述新版本數(shù)據(jù)表中的數(shù)據(jù)導(dǎo)入所述新版本數(shù)據(jù)表。
      [0015]優(yōu)選地,所述比對模塊對所述第一數(shù)據(jù)庫文件和所述第二數(shù)據(jù)庫文件中存儲的表結(jié)構(gòu)信息進(jìn)行比對,獲得表結(jié)構(gòu)差異信息時(shí),逐行對所述第一數(shù)據(jù)庫文件和所述第二數(shù)據(jù)庫文件中存儲的相對應(yīng)的各個(gè)數(shù)據(jù)表的表結(jié)構(gòu)信息進(jìn)行比對,獲得各個(gè)數(shù)據(jù)表的表結(jié)構(gòu)差

      [0016]優(yōu)選地,所述數(shù)據(jù)生成模塊依據(jù)所述表結(jié)構(gòu)差異信息和所述第一數(shù)據(jù)庫文件中的所述舊版本數(shù)據(jù)表中的數(shù)據(jù),生成所述新版本數(shù)據(jù)表中的數(shù)據(jù)時(shí):依據(jù)獲得的所述各個(gè)數(shù)據(jù)表的表結(jié)構(gòu)差異,結(jié)合所述第一數(shù)據(jù)庫文件中、各個(gè)舊版本數(shù)據(jù)表中未發(fā)生變化的表結(jié)構(gòu)部分對應(yīng)的數(shù)據(jù),和設(shè)定的、對應(yīng)于所述各個(gè)數(shù)據(jù)表的發(fā)生表結(jié)構(gòu)變化部分的默認(rèn)數(shù)據(jù),在所述第二數(shù)據(jù)庫文件中生成所述新版本數(shù)據(jù)表中的數(shù)據(jù)。
      [0017]優(yōu)選地,所述數(shù)據(jù)導(dǎo)入模塊將生成的所述新版本數(shù)據(jù)表中的數(shù)據(jù)導(dǎo)入所述新版本數(shù)據(jù)表時(shí):在使用所述第二數(shù)據(jù)庫文件中的所述新版本數(shù)據(jù)表中的數(shù)據(jù),向所述新版本數(shù)據(jù)表中導(dǎo)入數(shù)據(jù)時(shí),逐條逐字段判斷所述新版本數(shù)據(jù)表中待導(dǎo)入的字段下是否已經(jīng)存儲有數(shù)據(jù);若已存儲,則放棄該字段的導(dǎo)入;若未存儲,則將該字段對應(yīng)的數(shù)據(jù)導(dǎo)入所述新版本數(shù)據(jù)表中。
      [0018]優(yōu)選地,所述第一數(shù)據(jù)庫文件和所述第二數(shù)據(jù)庫文件均為SQL文件;所述第一數(shù)據(jù)庫文件與所述第二數(shù)據(jù)庫文件中的表結(jié)構(gòu)信息與數(shù)據(jù)信息分開存儲。
      [0019]與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn):
      [0020]本發(fā)明提供的設(shè)備跨版本升級方案,在生成新版本數(shù)據(jù)表中的數(shù)據(jù)的過程中,新版本軟件便可以對新版本數(shù)據(jù)表進(jìn)行操作,實(shí)時(shí)將升級過程中設(shè)備的軟件系統(tǒng)產(chǎn)生的數(shù)據(jù)寫入到數(shù)據(jù)表中。因此,通過本發(fā)明提供的設(shè)備跨版本升級方案,能夠有效避免現(xiàn)有的設(shè)備跨版本升級方案無法在新版本數(shù)據(jù)升級過程中對數(shù)據(jù)表進(jìn)行控制,從而帶來的數(shù)據(jù)升級期間生成的數(shù)據(jù)無法繼承造成動態(tài)損耗的問題。同時(shí),本發(fā)明提供的設(shè)備跨版本升級方案在設(shè)備內(nèi)部根據(jù)兩個(gè)數(shù)據(jù)庫文件生成新版本數(shù)據(jù)表中的數(shù)據(jù),無需像現(xiàn)有技術(shù)中的升級方案需要人工將數(shù)據(jù)導(dǎo)入、導(dǎo)出,實(shí)現(xiàn)了設(shè)備內(nèi)部的版本升級,避免了多余的版本升級處理流程。
      【專利附圖】

      【附圖說明】
      [0021]圖1是根據(jù)本發(fā)明實(shí)施例一的一種設(shè)備跨版本升級方法的步驟流程圖;
      [0022]圖2是根據(jù)本發(fā)明實(shí)施例二的一種設(shè)備跨版本升級方法的步驟流程圖;
      [0023]圖3是根據(jù)本發(fā)明實(shí)施例三的一種設(shè)備跨版本升級方法的步驟流程圖;
      [0024]圖4是根據(jù)本發(fā)明實(shí)施例四的一種設(shè)備跨版本升級裝置的結(jié)構(gòu)框圖。
      【具體實(shí)施方式】
      [0025]為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和【具體實(shí)施方式】對本發(fā)明作進(jìn)一步詳細(xì)的說明。
      [0026]實(shí)施例一
      [0027]參照圖1,示出了根據(jù)本發(fā)明實(shí)施例一的一種設(shè)備跨版本升級方法的步驟流程圖。
      [0028]本實(shí)施例的設(shè)備跨版本升級方法的步驟包括:
      [0029]步驟S102:服務(wù)器生成與數(shù)據(jù)庫中的舊版本數(shù)據(jù)表對應(yīng)的第一數(shù)據(jù)庫文件。
      [0030]其中,舊版本數(shù)據(jù)表為對應(yīng)于舊版本軟件的數(shù)據(jù)表,第一數(shù)據(jù)庫文件中包括:舊版本數(shù)據(jù)表的表結(jié)構(gòu)信息,和舊版本數(shù)據(jù)表中的數(shù)據(jù)。如,舊版本軟件對應(yīng)的關(guān)鍵表,以及一些非關(guān)鍵表。其中,關(guān)鍵表如設(shè)備信息配置表、告警基礎(chǔ)配置表等,這些關(guān)鍵表用于存儲舊版本的屬性信息,而非關(guān)鍵表則用于存儲設(shè)備用戶的一些相關(guān)數(shù)據(jù)。第一數(shù)據(jù)庫文件可以為任意的數(shù)據(jù)庫所支持的格式的文件。例如:服務(wù)器可以通過Linux Shell腳本生成SQL (Structured Query Language,結(jié)構(gòu)化查詢語言)文件,還可以是通過工具生成的其他格式的數(shù)據(jù)庫文件。
      [0031]步驟S104:服務(wù)器運(yùn)行新版本軟件,并在數(shù)據(jù)庫中創(chuàng)建與新版本軟件相對應(yīng)的新版本數(shù)據(jù)表,實(shí)時(shí)接收對新版本數(shù)據(jù)表的操作。
      [0032]在將數(shù)據(jù)庫中的舊版本數(shù)據(jù)表生成第一數(shù)據(jù)庫文件后將數(shù)據(jù)庫清空,然后運(yùn)行新版本軟件。進(jìn)而調(diào)用新版本軟件在數(shù)據(jù)庫中創(chuàng)建新版本數(shù)據(jù)表。需要說明的是,本實(shí)施例中將數(shù)據(jù)庫清空,以提供創(chuàng)建新版本數(shù)據(jù)表空間僅是一種可行方案。在具體操作時(shí)并不局限于此,本領(lǐng)域技術(shù)人員可以根據(jù)實(shí)際需求設(shè)定相應(yīng)的其它方式,如,將數(shù)據(jù)庫中的舊版本數(shù)據(jù)表以及數(shù)據(jù)移存,以提供創(chuàng)建新版本數(shù)據(jù)表的空間;再如,使用創(chuàng)建的新版本數(shù)據(jù)表將數(shù)據(jù)庫中的舊版本數(shù)據(jù)表直接覆蓋等等。
      [0033]此時(shí)一旦新版本數(shù)據(jù)表創(chuàng)建成功,新版本軟件便可以對新版本數(shù)據(jù)表進(jìn)行操作,實(shí)時(shí)將升級過程中設(shè)備的軟件系統(tǒng)產(chǎn)生的數(shù)據(jù)寫入到數(shù)據(jù)表中,例如:將升級過程中軟件系統(tǒng)上報(bào)的一條告警信息寫入新版本數(shù)據(jù)表中。
      [0034]步驟S106:服務(wù)器生成與新版本數(shù)據(jù)表對應(yīng)的第二數(shù)據(jù)庫文件。
      [0035]其中,第二數(shù)據(jù)庫文件中包括:新版本數(shù)據(jù)表的表結(jié)構(gòu)信息,第二數(shù)據(jù)庫文件與第一數(shù)據(jù)庫文件格式相同,如均為.sql文件。
      [0036]步驟S108:服務(wù)器對第一數(shù)據(jù)庫文件和第二數(shù)據(jù)庫文件中存儲的表結(jié)構(gòu)信息進(jìn)行比對,獲得表結(jié)構(gòu)差異信息。
      [0037]例如:第一數(shù)據(jù)文件中存儲有表名為A、B和C的三個(gè)舊數(shù)據(jù)表的表結(jié)構(gòu)信息,第二數(shù)據(jù)庫文件中儲有表名為a、b和C的三個(gè)新數(shù)據(jù)表的表結(jié)構(gòu)信息。那么在對兩個(gè)數(shù)據(jù)庫文件進(jìn)行比對時(shí),將舊表A與新表A的表結(jié)構(gòu)信息進(jìn)行比對,比對出新舊表A的表結(jié)構(gòu)差異,同樣的原理比對出新舊表B的表結(jié)構(gòu)差異以及新舊表C的表結(jié)構(gòu)差異,最終獲得所有的數(shù)據(jù)表的表結(jié)構(gòu)差異。
      [0038]步驟SllO:服務(wù)器依據(jù)表結(jié)構(gòu)差異信息和第一數(shù)據(jù)庫文件中的舊版本數(shù)據(jù)表中的數(shù)據(jù),生成新版本數(shù)據(jù)表中的數(shù)據(jù)。
      [0039]由于數(shù)據(jù)表的表結(jié)構(gòu)發(fā)生了變化,例如同樣是數(shù)據(jù)表A,新舊數(shù)據(jù)表相比新數(shù)據(jù)表在舊數(shù)據(jù)表的基礎(chǔ)上刪除了一個(gè)字段,那么在生成新數(shù)據(jù)表A對應(yīng)的數(shù)據(jù)時(shí),就需要將刪除的這一個(gè)字段對應(yīng)的數(shù)據(jù)刪除,其它修改如增加字段等也與此類似,從而生成所有新版本數(shù)據(jù)表對應(yīng)的數(shù)據(jù)。
      [0040]步驟S112:服務(wù)器將生成的新版本數(shù)據(jù)表中的數(shù)據(jù)導(dǎo)入新版本數(shù)據(jù)表。
      [0041]需要說明的是,上述步驟S202至步驟S112均可以由本領(lǐng)域技術(shù)人員采用任意適當(dāng)?shù)膶?shí)現(xiàn)方式實(shí)現(xiàn),如,由服務(wù)器通過調(diào)用Linux Shell腳本來實(shí)現(xiàn)。但不限于此,其它語言腳本和實(shí)現(xiàn)方式也同樣適用。
      [0042]通過本實(shí)施例提供的設(shè)備跨版本升級方法,在生成新版本數(shù)據(jù)表中的數(shù)據(jù)的過程中,新版本軟件便可以對新版本數(shù)據(jù)表進(jìn)行操作,實(shí)時(shí)將升級過程中設(shè)備的軟件系統(tǒng)產(chǎn)生的數(shù)據(jù)寫入到數(shù)據(jù)表中。因此,通過本實(shí)施例提供的設(shè)備跨版本升級方法,能夠有效避免現(xiàn)有的設(shè)備跨版本升級方法無法在新版本數(shù)據(jù)升級過程中對數(shù)據(jù)表進(jìn)行控制,從而帶來的數(shù)據(jù)升級期間生成的數(shù)據(jù)無法繼承造成動態(tài)損耗的問題。同時(shí),本實(shí)施例提供的設(shè)備跨版本升級方法在設(shè)備內(nèi)部根據(jù)兩個(gè)數(shù)據(jù)庫文件生成新版本數(shù)據(jù)表中的數(shù)據(jù),無需像現(xiàn)有技術(shù)中的升級方法需要人工將數(shù)據(jù)導(dǎo)入、導(dǎo)出,實(shí)現(xiàn)了設(shè)備內(nèi)部的版本升級,避免了多余的版本升級處理流程。
      [0043]實(shí)施例二
      [0044]參照圖2,示出了根據(jù)本發(fā)明實(shí)施例二的一種設(shè)備跨版本升級方法的步驟流程圖。
      [0045]本實(shí)施例的設(shè)備跨版本升級方法具體步驟包括:
      [0046]步驟S202:服務(wù)器調(diào)用腳本程序生成與數(shù)據(jù)庫中的舊版本數(shù)據(jù)表對應(yīng)的第一數(shù)據(jù)庫文件。
      [0047]其中,舊版本數(shù)據(jù)表為對應(yīng)于舊版本軟件的數(shù)據(jù)表,第一數(shù)據(jù)庫文件中包括:舊版本數(shù)據(jù)表的表結(jié)構(gòu)信息,和舊版本數(shù)據(jù)表中的數(shù)據(jù)。
      [0048]本實(shí)施例中的第一數(shù)據(jù)庫文件為SQL文件,在本實(shí)施例中將該SQL文件記為第一SQL文件,本實(shí)施例中服務(wù)器通過調(diào)用Linux Shell腳本將數(shù)據(jù)庫中存儲的舊版本數(shù)據(jù)表生成第一 SQL文件。
      [0049]將數(shù)據(jù)庫中的舊版本數(shù)據(jù)表信息轉(zhuǎn)換成第一 SQL文件時(shí),可以將表結(jié)構(gòu)信息與數(shù)據(jù)信息分開存儲,即在第一 SQL文件中先存儲數(shù)據(jù)庫中各個(gè)數(shù)據(jù)表的表結(jié)構(gòu)信息,待所有數(shù)據(jù)表的表結(jié)構(gòu)信息全部存儲完后,再存儲各個(gè)數(shù)據(jù)表對應(yīng)的數(shù)據(jù)信息,這樣生成的第一SQL文件前半部分內(nèi)容為數(shù)據(jù)表的表結(jié)構(gòu)信息,后半部分內(nèi)容為數(shù)據(jù)表的數(shù)據(jù)信息。采用這樣的存儲形式,更便于對數(shù)據(jù)表的表結(jié)構(gòu)差異進(jìn)行比對。
      [0050]另外,將數(shù)據(jù)庫中的舊版本數(shù)據(jù)表信息轉(zhuǎn)換成第一 SQL文件時(shí),還可以將表結(jié)構(gòu)信息與數(shù)據(jù)信息交叉存儲,即存儲完A數(shù)據(jù)表的表結(jié)構(gòu)信息后,緊接著存儲A數(shù)據(jù)表的數(shù)據(jù),待存儲完A數(shù)據(jù)表的數(shù)據(jù)后再存儲B數(shù)據(jù)表的表結(jié)構(gòu)信息。采用這樣的存儲形式,能夠更直觀地獲得各數(shù)據(jù)表對應(yīng)的數(shù)據(jù)信息以及數(shù)據(jù)表的表結(jié)構(gòu)。需要說明的是,除上述列舉的存儲形式外,本領(lǐng)域技術(shù)人員還可以根據(jù)實(shí)際需求設(shè)置第一 SQL文件中表結(jié)構(gòu)信息與數(shù)據(jù)信息的存儲形式,本申請對此不作具體限制。
      [0051]本實(shí)施例中的第一 SQL文件中存儲的舊版本數(shù)據(jù)表的表結(jié)構(gòu)信息與數(shù)據(jù)信息分開存儲。假設(shè)舊版本數(shù)據(jù)表為A、B和C,那么在第一 SQL文件中前半部分存儲的為舊版本數(shù)據(jù)表A、B和C的表結(jié)構(gòu)信息,在第一 SQL文件中后半部分存儲的為舊版本數(shù)據(jù)表A、B和C的數(shù)據(jù)信息。
      [0052]步驟S204:服務(wù)器調(diào)用腳本程序運(yùn)行新版本軟件,并在數(shù)據(jù)庫中創(chuàng)建與新版本軟件相對應(yīng)的新版本數(shù)據(jù)表,實(shí)時(shí)接收對新版本數(shù)據(jù)表的操作。
      [0053]服務(wù)器調(diào)用腳本程序運(yùn)行新版本軟件,此時(shí)新版本軟件實(shí)時(shí)接收對新版本數(shù)據(jù)表的操作可以是:在數(shù)據(jù)庫中生成新版本數(shù)據(jù)表后,新版本軟件就可以對新版本數(shù)據(jù)表進(jìn)行操作,例如:向新版本數(shù)據(jù)表中記錄一條告警信息,而不必等待舊版本數(shù)據(jù)表的數(shù)據(jù)導(dǎo)入后再進(jìn)行操作,從而避免了數(shù)據(jù)的動態(tài)損耗。
      [0054]步驟S206:服務(wù)器調(diào)用腳本程序生成與新版本數(shù)據(jù)表對應(yīng)的第二數(shù)據(jù)庫文件。
      [0055]其中,第二數(shù)據(jù)庫文件中包括:新版本數(shù)據(jù)表的表結(jié)構(gòu)信息,優(yōu)選地,第二數(shù)據(jù)庫文件還可以包括各數(shù)據(jù)表對應(yīng)的默認(rèn)數(shù)據(jù)。本實(shí)施例中第二數(shù)據(jù)庫文件依然是一個(gè)SQL文件,記為第二 SQL文件,該第二 SQL文件中的數(shù)據(jù)表結(jié)構(gòu)信息與數(shù)據(jù)表中的數(shù)據(jù)信息,也如步驟S202中生成的第一 SQL文件中存儲的數(shù)據(jù)表結(jié)構(gòu)信息與數(shù)據(jù)表中的數(shù)據(jù)信息一樣分開存儲。假設(shè)新版本數(shù)據(jù)表包括數(shù)據(jù)表A、B、C和D,那么生成的第二 SQL文件中前半部分存儲有新版本數(shù)據(jù)表A、B、C和D的表結(jié)構(gòu)信息,第二 SQL文件中后半部分存儲有新版本數(shù)據(jù)表A、B、C和D對應(yīng)的默認(rèn)數(shù)據(jù)。
      [0056]以新增字段為例,通過腳本程序調(diào)用新版本軟件在數(shù)據(jù)庫中創(chuàng)建與新版本軟件相對應(yīng)的新版本數(shù)據(jù)表時(shí),既生成新版本數(shù)據(jù)表的表結(jié)構(gòu),又生成各數(shù)據(jù)表新增字段對應(yīng)的默認(rèn)數(shù)據(jù)。其中,默認(rèn)數(shù)據(jù)可以為事例性的數(shù)據(jù),例如:當(dāng)數(shù)據(jù)表中有一字段為“地理位置”,那么該字段下對應(yīng)有一個(gè)默認(rèn)數(shù)據(jù)“北京”,當(dāng)用戶在填寫該字段信息時(shí)通過該默認(rèn)數(shù)據(jù)就可明了所需要填寫的地理位置信息為城市名稱。當(dāng)然,也可以僅生成新版本數(shù)據(jù)表的表結(jié)構(gòu),而數(shù)據(jù)表新增字段置空。
      [0057]步驟S208:服務(wù)器調(diào)用腳本程序逐行對第一數(shù)據(jù)庫文件和第二數(shù)據(jù)庫文件中存儲的相對應(yīng)的各個(gè)數(shù)據(jù)表的表結(jié)構(gòu)信息進(jìn)行比對,獲得各個(gè)數(shù)據(jù)表的表結(jié)構(gòu)差異。
      [0058]本實(shí)施例中,服務(wù)器調(diào)用腳本程序在將舊版本數(shù)據(jù)表、新版本數(shù)據(jù)表均生成對應(yīng)的第一 SQL文件以及第二 SQL文件后,將生成的兩個(gè)SQL文件中的信息進(jìn)行比對,以獲得各個(gè)數(shù)據(jù)表的表結(jié)構(gòu)差異。在比對時(shí),將第一 SQL文件中存儲的舊版本數(shù)據(jù)表A的表結(jié)構(gòu)信息、與第二 SQL文件中存儲的新版本數(shù)據(jù)表A的表結(jié)構(gòu)信息進(jìn)行比對。在比對時(shí)逐行的對該部分信息進(jìn)行比對,在比對時(shí),若發(fā)現(xiàn)新版本數(shù)據(jù)表A的表結(jié)構(gòu)信息較舊版本數(shù)據(jù)表A的表結(jié)構(gòu)信息多了一列,那么就將該多出的這一列對應(yīng)的表結(jié)構(gòu)信息作為數(shù)據(jù)表A的表結(jié)構(gòu)差異。以同樣的比對方式,獲得各個(gè)數(shù)據(jù)表的表結(jié)構(gòu)差異。
      [0059]本實(shí)施例中,由于是對兩個(gè)SQL文件中的信息逐行進(jìn)行比對,因此能夠直接在設(shè)備內(nèi)部通過Shell腳本實(shí)現(xiàn)。相比現(xiàn)有的方案中,需要在設(shè)備外部比對新、舊數(shù)據(jù)表的表結(jié)構(gòu)差異,待比對完差異后再生成新數(shù)據(jù)表對應(yīng)的數(shù)據(jù),然后將新數(shù)據(jù)表及數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫中,更節(jié)省人力,同時(shí)還避免了導(dǎo)入、導(dǎo)出數(shù)據(jù)的處理流程。
      [0060]需要說明的是,上述所列舉的僅是數(shù)據(jù)表中的某字段結(jié)構(gòu)發(fā)生改變時(shí)的情況,當(dāng)新版本數(shù)據(jù)表較舊版本數(shù)據(jù)表新增了數(shù)據(jù)表D時(shí),由于舊版本數(shù)據(jù)表中并不存在數(shù)據(jù)表D,那么新增的數(shù)據(jù)表D的整個(gè)數(shù)據(jù)表結(jié)構(gòu)信息就作為該數(shù)據(jù)表的表結(jié)構(gòu)差異。例如:通過腳本程序啟動的新版本軟件生成了一個(gè)針對于新軟件版本的屬性信息表,如告警基礎(chǔ)配置表,而該數(shù)據(jù)表在舊版本數(shù)據(jù)表中并不存在,此時(shí)就可以說增加了新的數(shù)據(jù)表。除了增加表的情況,還同樣存在刪除數(shù)據(jù)表的情況、或數(shù)據(jù)表中的字段信息發(fā)生改變的情況,無論上述哪種情況,均可以通過比對兩個(gè)SQL文件比對出各個(gè)數(shù)據(jù)表的表結(jié)構(gòu)差異。其中,刪除數(shù)據(jù)表是指新版本數(shù)據(jù)表較舊版本數(shù)據(jù)表缺少了一個(gè)數(shù)據(jù)表A,此時(shí),記錄缺少數(shù)據(jù)表A,那么在生成新版本數(shù)據(jù)表信息時(shí),則不會在第二 SQL文件中生成數(shù)據(jù)表A的數(shù)據(jù)。而字段信息發(fā)生變化的情況,等同于刪除一個(gè)字段信息同時(shí)新增一個(gè)字段信息,字段信息發(fā)生變化例如:在數(shù)據(jù)表A中第一列對應(yīng)的字段信息為“姓名”,而在新生成的數(shù)據(jù)表A中該列的字段信息為“年齡”,那么也就是說新生成的數(shù)據(jù)表A相比舊的數(shù)據(jù)表A發(fā)生了字段信息的變化,在處理時(shí),可認(rèn)為新生成的數(shù)據(jù)表A相對于舊數(shù)據(jù)表A刪除了字段信息“姓名”而新增了字段信息“年齡”。
      [0061]步驟S210:服務(wù)器調(diào)用腳本程序依據(jù)獲得的各個(gè)數(shù)據(jù)表的表結(jié)構(gòu)差異,結(jié)合第一數(shù)據(jù)庫文件中、各個(gè)舊版本數(shù)據(jù)表中未發(fā)生變化的表結(jié)構(gòu)部分對應(yīng)的數(shù)據(jù),和設(shè)定的、對應(yīng)于各個(gè)數(shù)據(jù)表的發(fā)生表結(jié)構(gòu)變化部分的默認(rèn)數(shù)據(jù),在第二數(shù)據(jù)庫文件中生成新版本數(shù)據(jù)表中的數(shù)據(jù)。
      [0062]例如:在步驟S208中已比對出新版本數(shù)據(jù)表B較舊版本數(shù)據(jù)表B新增了字段信息為“地理位置”的字段,其他的字段信息未改變。那么在生成新版本數(shù)據(jù)表B對應(yīng)的數(shù)據(jù)時(shí),只需將第一 SQL文件種存儲的舊數(shù)據(jù)表B對應(yīng)的數(shù)據(jù)信息復(fù)制到第二 SQL文件中的相應(yīng)位置。這樣在第二 SQL文件中,就生成了將未發(fā)生變化的表結(jié)構(gòu)部分對應(yīng)的數(shù)據(jù),和設(shè)定的、對應(yīng)于各個(gè)數(shù)據(jù)表的發(fā)生表結(jié)構(gòu)變化部分的默認(rèn)數(shù)據(jù),如數(shù)據(jù)表B中新增的“地理位置”字段對應(yīng)的默認(rèn)數(shù)據(jù),組合生成新版本數(shù)據(jù)表B對應(yīng)的數(shù)據(jù)。采用同樣的方式,在第二 SQL文件中生成其他新版本數(shù)據(jù)表對應(yīng)的數(shù)據(jù),組合后即生成新版本數(shù)據(jù)表中的數(shù)據(jù)。
      [0063]步驟S212:服務(wù)器調(diào)用腳本程序使用第二數(shù)據(jù)庫文件中的新版本數(shù)據(jù)表中的數(shù)據(jù),向新版本數(shù)據(jù)表中導(dǎo)入數(shù)據(jù)。
      [0064]優(yōu)選地,本實(shí)施例中服務(wù)器在調(diào)用腳本程序使用第二數(shù)據(jù)庫文件中的新版本數(shù)據(jù)表中的數(shù)據(jù),向新版本數(shù)據(jù)表中導(dǎo)入數(shù)據(jù)時(shí),逐條逐字段判斷新版本數(shù)據(jù)表中待導(dǎo)入的字段下是否已經(jīng)存儲有數(shù)據(jù);若已存儲,則放棄該字段的導(dǎo)入;若未存儲,則將該字段對應(yīng)的數(shù)據(jù)導(dǎo)入新版本數(shù)據(jù)表中。
      [0065]例如:第二 SQL文件中包含生成的新版本數(shù)據(jù)中數(shù)據(jù)表A中的一條SQL語句,該語句記載了數(shù)據(jù)表A中的第三條記錄的數(shù)據(jù)信息。當(dāng)將該語句中的數(shù)據(jù)信息導(dǎo)入數(shù)據(jù)庫中的新版本數(shù)據(jù)表A時(shí),要依次判斷新版本數(shù)據(jù)表A中第三條記錄中的各個(gè)字段下是否存儲有數(shù)據(jù),若前三個(gè)單元格中未存儲數(shù)據(jù),而第四個(gè)單元格中存儲有數(shù)據(jù),那么就將該條記錄中的前三個(gè)數(shù)據(jù)對應(yīng)導(dǎo)入前三個(gè)字段中,放棄該條記錄中的第四個(gè)字段數(shù)據(jù)的導(dǎo)入。
      [0066]需要說明的是,本實(shí)施例中在使用第二數(shù)據(jù)庫文件中的新版本數(shù)據(jù)表中的數(shù)據(jù),向新版本數(shù)據(jù)表中導(dǎo)入數(shù)據(jù)時(shí)采用的是一種優(yōu)選的導(dǎo)入方式。在導(dǎo)入數(shù)據(jù)時(shí)并不局限于本實(shí)施例中的描述,還可以區(qū)分出跨版本升級時(shí)會發(fā)生表結(jié)構(gòu)變化的數(shù)據(jù)表、以及不會發(fā)生表結(jié)構(gòu)變化的數(shù)據(jù)表,僅是在導(dǎo)入發(fā)生表結(jié)構(gòu)變化的數(shù)據(jù)表對應(yīng)的數(shù)據(jù)時(shí),才逐條逐字段的判斷數(shù)據(jù)庫中是否已經(jīng)存儲有該數(shù)據(jù)信息。當(dāng)然,還有其他的設(shè)置方式,在此不再一一列舉。
      [0067]通過本實(shí)施例提供的設(shè)備跨版本升級方法,服務(wù)器調(diào)用腳本程序啟動新版本軟件,在生成新版本數(shù)據(jù)表中的數(shù)據(jù)的過程中,新版本軟件便可以對新版本數(shù)據(jù)表進(jìn)行操作,實(shí)時(shí)將升級過程中設(shè)備的軟件系統(tǒng)產(chǎn)生的數(shù)據(jù)寫入到數(shù)據(jù)表中。因此,通過本實(shí)施例提供的設(shè)備跨版本升級方法,能夠有效避免現(xiàn)有的設(shè)備跨版本升級方法無法在新版本數(shù)據(jù)升級過程中對數(shù)據(jù)表進(jìn)行控制,從而帶來的數(shù)據(jù)升級期間生成的數(shù)據(jù)無法繼承造成動態(tài)損耗的問題。同時(shí),本實(shí)施例提供的設(shè)備跨版本升級方法在設(shè)備內(nèi)部根據(jù)兩個(gè)數(shù)據(jù)庫文件生成新版本數(shù)據(jù)表中的數(shù)據(jù),無需像現(xiàn)有技術(shù)中的升級方法需要人工將數(shù)據(jù)導(dǎo)入、導(dǎo)出,實(shí)現(xiàn)了設(shè)備內(nèi)部的版本升級,避免了多余的版本升級處理流程。
      [0068]實(shí)施例三
      [0069]參照圖3,示出了根據(jù)本發(fā)明實(shí)施例三的一種設(shè)備跨版本升級方法的步驟流程圖。
      [0070]本實(shí)施例中以基于嵌入式Mysql數(shù)據(jù)庫的電信設(shè)備為例,對本發(fā)明的設(shè)備跨版本升級方法進(jìn)行介紹。本實(shí)施例的升級方法在嵌入式的Linux操作系統(tǒng)中使用,在軟件版本升級過程中,升級程序與Shell命令和Mysql數(shù)據(jù)庫中的Sql命令相互配合協(xié)調(diào)工作,從而實(shí)現(xiàn)Mysql數(shù)據(jù)庫遞增式變化跨版本無障礙升級。
      [0071]其中,跨版本主要指的是新舊版本的數(shù)據(jù)表結(jié)構(gòu)有所變化,而舊版本數(shù)據(jù)在新版本數(shù)據(jù)表結(jié)構(gòu)變化后得以實(shí)時(shí)繼承。無障礙主要指的是所有數(shù)據(jù)升級處理流程在整體版本升級流程內(nèi)部封裝,對外不呈現(xiàn)因版本變化而帶來多余的處理流程。數(shù)據(jù)庫遞增式變化指在數(shù)據(jù)庫中增加數(shù)據(jù)表、刪除數(shù)據(jù)表;數(shù)據(jù)表結(jié)構(gòu)增加字段、刪除字段和原有字段類型改變,其中字段類型的改變等價(jià)于刪除舊類型字段,同時(shí)新增一個(gè)新類型字段。
      [0072]本實(shí)施例中基于嵌入式Mysql數(shù)據(jù)庫的電信設(shè)備在數(shù)據(jù)表結(jié)構(gòu)發(fā)生變化時(shí)的無障礙跨版本升級的具體流程如下:
      [0073]步驟S302:升級程序啟動設(shè)備版本升級后,轉(zhuǎn)存舊版本的數(shù)據(jù)表信息。
      [0074]本實(shí)施例中的升級程序是運(yùn)行在電信設(shè)備中的軟件,存儲于電信設(shè)備的服務(wù)器中。在進(jìn)行設(shè)備版本升級前,首先要下載新的軟件版本至電信設(shè)備的硬盤上,下載的新的軟件版本包括:供升級程序調(diào)用的Shell腳本以及待升級的軟件版本包。
      [0075]該步驟中,升級程序調(diào)用Shell腳本將舊版本的數(shù)據(jù)表信息轉(zhuǎn)存為SQL文件、保存在本地硬盤命名為OldDate.sql。該文件名為OldDate.sql的文件包括舊版本數(shù)據(jù)表的表結(jié)構(gòu)信息和舊版本數(shù)據(jù)表中的數(shù)據(jù)信息。
      [0076]步驟S304:升級程序升級新版本軟件,在數(shù)據(jù)庫中生成新版本數(shù)據(jù)表。
      [0077]升級程序調(diào)用Shell腳本清空數(shù)據(jù)庫中的數(shù)據(jù)表,并運(yùn)行新版本軟件,通過新版本軟件生成新版本數(shù)據(jù)表的表結(jié)構(gòu)和相關(guān)的默認(rèn)數(shù)據(jù)。
      [0078]在此步驟中,新版本數(shù)據(jù)表的表結(jié)構(gòu)一旦生成,便即刻允許新軟件版本對新建立的新版本表進(jìn)行相關(guān)操作,無需等待數(shù)據(jù)升級完成。由于電信設(shè)備的軟件系統(tǒng)比較龐大,任何模塊隨時(shí)都在產(chǎn)生數(shù)據(jù),產(chǎn)生的每條數(shù)據(jù)都需要及時(shí)的記錄在數(shù)據(jù)庫,比如:上報(bào)一條告警信息就需要及記錄在數(shù)據(jù)庫中。而現(xiàn)有的設(shè)備升級方法中由于在數(shù)據(jù)升級完成前無法對數(shù)據(jù)庫進(jìn)行相關(guān)操作,因此電信設(shè)備的軟件系統(tǒng)的各個(gè)模塊在升級過程中產(chǎn)生的數(shù)據(jù)無法記錄在數(shù)據(jù)庫中,因此數(shù)據(jù)無法實(shí)時(shí)繼承。
      [0079]步驟S306:升級程序轉(zhuǎn)存數(shù)據(jù)庫中的新版本數(shù)據(jù)表信息。
      [0080]升級程序調(diào)用Shell腳本轉(zhuǎn)存新版本的數(shù)據(jù)庫信息,將新版本的數(shù)據(jù)表信息轉(zhuǎn)存為SQL文件、也保存在本地硬盤中,命名為NewDate.sql。該文件名為NewDate.sql的文件包括新版本的表結(jié)構(gòu)信息和默認(rèn)數(shù)據(jù)信息。
      [0081]步驟S308:升級程序調(diào)用Shell腳本對NewDate.sql與Old Date, sql文件進(jìn)行比較,獲得數(shù)據(jù)表的表結(jié)構(gòu)差異;根據(jù)表結(jié)構(gòu)差異,基于舊版本數(shù)據(jù)表中的數(shù)據(jù)信息直接生成符合新版本數(shù)據(jù)表結(jié)構(gòu)的數(shù)據(jù)。
      [0082]本實(shí)施例中升級程序調(diào)用Shell腳本對本地硬盤中的OldDate.sql和NewData.sql進(jìn)行比較,根據(jù)表結(jié)構(gòu)差異,基于舊版本數(shù)據(jù),修改NewData.sql文件生成新版本數(shù)據(jù)。其中,表結(jié)構(gòu)差異包括:數(shù)據(jù)庫中增加數(shù)據(jù)表、刪除數(shù)據(jù)表;數(shù)據(jù)表結(jié)構(gòu)增加字段、刪除字段和原有字段類型改變。
      [0083]本實(shí)施例中的SQL文件的格式為前半部分是數(shù)據(jù)表的表結(jié)構(gòu)信息,后半部分是數(shù)據(jù)表對應(yīng)的數(shù)據(jù)信息。Shell腳本支持查找、抽取列操作、抽取行操作等功能,因此在通過Shell腳本比對兩個(gè)SQL文件中的數(shù)據(jù)表的結(jié)構(gòu)差異很容易實(shí)現(xiàn)。找到差異后,在NewData.sql中繼承OldDate.sql中沒有發(fā)生變化部分表結(jié)構(gòu)的數(shù)據(jù)信息,同時(shí)對發(fā)生變化的部分使用默認(rèn)數(shù)據(jù)插入,生成符合新版本數(shù)據(jù)表結(jié)構(gòu)的基礎(chǔ)數(shù)據(jù)即新版本數(shù)據(jù)表中的數(shù)據(jù)。
      [0084]本實(shí)施例提供的將新舊版本數(shù)據(jù)生成兩個(gè)SQL文件,通過Shell腳本比對各個(gè)數(shù)據(jù)表的表結(jié)構(gòu)差異,較現(xiàn)有的設(shè)備跨版本升級方法根據(jù)表結(jié)構(gòu)差異組合生成新的表結(jié)構(gòu)、然后再根據(jù)信息的表結(jié)構(gòu)生成對應(yīng)的數(shù)據(jù)的方法,減少了頻繁的SQL表操作,升級效率更
      高,更可靠。
      [0085]步驟S310:升級程序調(diào)用Shell腳本把生成的基礎(chǔ)數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫中的新版本的數(shù)據(jù)表中,并且在導(dǎo)入基礎(chǔ)數(shù)據(jù)時(shí)以數(shù)據(jù)庫中存儲的數(shù)據(jù)信息為準(zhǔn)。
      [0086]升級程序調(diào)用Shell腳本使用Mysql命令把修改后的NewData.sql文件中的基礎(chǔ)數(shù)據(jù)插入新版本的數(shù)據(jù)庫中,為保護(hù)數(shù)據(jù)升級期間新版本動態(tài)生成的數(shù)據(jù),在導(dǎo)入基礎(chǔ)數(shù)據(jù)時(shí)數(shù)據(jù)信息以數(shù)據(jù)庫中已存儲的數(shù)據(jù)信息為準(zhǔn)。導(dǎo)入基礎(chǔ)數(shù)據(jù)時(shí)以數(shù)據(jù)庫中已存儲的數(shù)據(jù)信息為準(zhǔn)是指:導(dǎo)入數(shù)據(jù)過程中,遇到已經(jīng)存儲在數(shù)據(jù)表中的字段下的數(shù)據(jù)信息,以數(shù)據(jù)庫中已存儲的字段下的數(shù)據(jù)信息為準(zhǔn),丟棄修改后的NewData.sql中相對應(yīng)的數(shù)據(jù)信息。
      [0087]至此電信設(shè)備的數(shù)據(jù)升級完成,本實(shí)施例中升級過程中所有的處理均由升級程序調(diào)用的Shell腳本來實(shí)現(xiàn),所有的處理流程也可以集中在一個(gè)Shell腳本中實(shí)現(xiàn)。本實(shí)施例中,軟件版本調(diào)用Linux Shell腳本控制數(shù)據(jù)升級過程,和軟件版本相互獨(dú)立,和軟件代碼開發(fā)相比,Linux Shell腳本開發(fā)周期更短,更便捷,更容易維護(hù)。
      [0088]通過本實(shí)施例提供的設(shè)備跨版本升級方法,升級程序通過調(diào)用腳本實(shí)現(xiàn)升級前舊版本的數(shù)據(jù)庫信息的導(dǎo)出、新版數(shù)據(jù)表的建立、新版本數(shù)據(jù)表信息的導(dǎo)出、表結(jié)構(gòu)差異的比對、符合新版本數(shù)據(jù)表結(jié)構(gòu)的數(shù)據(jù)的生成以及數(shù)據(jù)的導(dǎo)入這一系列的流程,可見本實(shí)施例中的升級過程完全自動化,無需之前的準(zhǔn)備和人工干預(yù);并且由于是在設(shè)備內(nèi)容進(jìn)行的升級,因此沒有因版本變化而額外產(chǎn)生的升級操作。同時(shí),本實(shí)施例中提供的設(shè)備版本升級方法在舊版本人工數(shù)據(jù)制作期間產(chǎn)生的動態(tài)數(shù)據(jù)、和新版本升級后數(shù)據(jù)表結(jié)構(gòu)建立完成到數(shù)據(jù)升級完成期間的新版本動態(tài)數(shù)據(jù)都可以良好繼承到新版本數(shù)據(jù)表中,因此升級過程中產(chǎn)生的數(shù)據(jù)可以良好的繼承。綜上,本實(shí)施例提供的基于嵌入式Mysql數(shù)據(jù)庫的電信設(shè)備在數(shù)據(jù)表結(jié)構(gòu)發(fā)生變化時(shí)無障礙跨版本升級的方法,解決了現(xiàn)有的升級技術(shù)中存在的工作量大、升級前版本動態(tài)數(shù)據(jù)不能繼承、升級后動態(tài)數(shù)據(jù)損耗等問題。
      [0089]實(shí)施例四
      [0090]參照圖4,示出了根據(jù)本發(fā)明實(shí)施例四的一種設(shè)備跨版本升級裝置的結(jié)構(gòu)框圖。
      [0091]本實(shí)施例的設(shè)備跨版本升級裝置包括:第一文件生成模塊402,用于生成與數(shù)據(jù)庫中的舊版本數(shù)據(jù)表對應(yīng)的第一數(shù)據(jù)庫文件,其中,舊版本數(shù)據(jù)表為對應(yīng)于舊版本軟件的數(shù)據(jù)表,第一數(shù)據(jù)庫文件中包括:舊版本數(shù)據(jù)表的表結(jié)構(gòu)信息,和舊版本數(shù)據(jù)表中的數(shù)據(jù);創(chuàng)建模塊404,用于運(yùn)行新版本軟件,并在數(shù)據(jù)庫中創(chuàng)建與新版本軟件相對應(yīng)的新版本數(shù)據(jù)表,實(shí)時(shí)接收對新版本數(shù)據(jù)表的操作;第二文件生成模塊406,用于生成與新版本數(shù)據(jù)表對應(yīng)的第二數(shù)據(jù)庫文件,其中,第二數(shù)據(jù)庫文件中包括:新版本數(shù)據(jù)表的表結(jié)構(gòu)信息;比對模塊408,用于對第一數(shù)據(jù)庫文件和第二數(shù)據(jù)庫文件中存儲的表結(jié)構(gòu)信息進(jìn)行比對,獲得表結(jié)構(gòu)差異信息;數(shù)據(jù)生成模塊410,用于依據(jù)表結(jié)構(gòu)差異信息和第一數(shù)據(jù)庫文件中的舊版本數(shù)據(jù)表中的數(shù)據(jù),生成新版本數(shù)據(jù)表中的數(shù)據(jù);數(shù)據(jù)導(dǎo)入模塊412,用于將生成的新版本數(shù)據(jù)表中的數(shù)據(jù)導(dǎo)入所述新版本數(shù)據(jù)表。
      [0092]優(yōu)選地,比對模塊408對第一數(shù)據(jù)庫文件和第二數(shù)據(jù)庫文件中存儲的表結(jié)構(gòu)信息進(jìn)行比對,獲得表結(jié)構(gòu)差異信息時(shí),逐行對第一數(shù)據(jù)庫文件和第二數(shù)據(jù)庫文件中存儲的相對應(yīng)的各個(gè)數(shù)據(jù)表的表結(jié)構(gòu)信息進(jìn)行比對,獲得各個(gè)數(shù)據(jù)表的表結(jié)構(gòu)差異。
      [0093]優(yōu)選地,數(shù)據(jù)生成模塊410依據(jù)表結(jié)構(gòu)差異信息和第一數(shù)據(jù)庫文件中的舊版本數(shù)據(jù)表中的數(shù)據(jù),生成新版本數(shù)據(jù)表中的數(shù)據(jù)時(shí):依據(jù)獲得的各個(gè)數(shù)據(jù)表的表結(jié)構(gòu)差異,結(jié)合第一數(shù)據(jù)庫文件中、各個(gè)舊版本數(shù)據(jù)表中未發(fā)生變化的表結(jié)構(gòu)部分對應(yīng)的數(shù)據(jù),和設(shè)定的、對應(yīng)于各個(gè)數(shù)據(jù)表的發(fā)生表結(jié)構(gòu)變化部分的默認(rèn)數(shù)據(jù),在第二數(shù)據(jù)庫文件中生成新版本數(shù)據(jù)表中的數(shù)據(jù)。
      [0094]優(yōu)選地,數(shù)據(jù)導(dǎo)入模塊412將生成的新版本數(shù)據(jù)表中的數(shù)據(jù)導(dǎo)入新版本數(shù)據(jù)表時(shí):在使用第二數(shù)據(jù)庫文件中的新版本數(shù)據(jù)表中的數(shù)據(jù),向新版本數(shù)據(jù)表中導(dǎo)入數(shù)據(jù)時(shí),逐條逐字段判斷新版本數(shù)據(jù)表中待導(dǎo)入的字段下是否已經(jīng)存儲有數(shù)據(jù);若已存儲,則放棄該字段的導(dǎo)入;若未存儲,則將該字段對應(yīng)的數(shù)據(jù)導(dǎo)入所述新版本數(shù)據(jù)表中。
      [0095]優(yōu)選地,第一數(shù)據(jù)庫文件和第二數(shù)據(jù)庫文件均為SQL文件;第一數(shù)據(jù)庫文件與第二數(shù)據(jù)庫文件中的表結(jié)構(gòu)信息與數(shù)據(jù)信息分開存儲。
      [0096]本實(shí)施例的設(shè)備跨版本升級裝置用于實(shí)現(xiàn)前述多個(gè)方法實(shí)施例中相應(yīng)的設(shè)備跨版本升級方法,并且具有相應(yīng)的方法實(shí)施的有益效果,在此不再贅述。
      [0097]本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。對于裝置實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
      [0098]以上對本發(fā)明所提供的設(shè)備跨版本升級方法和裝置進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
      【權(quán)利要求】
      1.一種設(shè)備跨版本升級方法,其特征在于,包括: 生成與數(shù)據(jù)庫中的舊版本數(shù)據(jù)表對應(yīng)的第一數(shù)據(jù)庫文件,其中,所述舊版本數(shù)據(jù)表為對應(yīng)于舊版本軟件的數(shù)據(jù)表,所述第一數(shù)據(jù)庫文件中包括:所述舊版本數(shù)據(jù)表的表結(jié)構(gòu)信息,和所述舊版本數(shù)據(jù)表中的數(shù)據(jù); 運(yùn)行新版本軟件,并在所述數(shù)據(jù)庫中創(chuàng)建與所述新版本軟件相對應(yīng)的新版本數(shù)據(jù)表,實(shí)時(shí)接收對所述新版本數(shù)據(jù)表的操作; 生成與所述新版本數(shù)據(jù)表對應(yīng)的第二數(shù)據(jù)庫文件,其中,所述第二數(shù)據(jù)庫文件中包括:所述新版本數(shù)據(jù)表的表結(jié)構(gòu)信息; 對所述第一數(shù)據(jù)庫文件和所述第二數(shù)據(jù)庫文件中存儲的表結(jié)構(gòu)信息進(jìn)行比對,獲得表結(jié)構(gòu)差異信息; 依據(jù)所述表結(jié)構(gòu)差異信息和所述第一數(shù)據(jù)庫文件中的所述舊版本數(shù)據(jù)表中的數(shù)據(jù),生成所述新版本數(shù)據(jù)表中的數(shù)據(jù); 將生成的所述新版本數(shù)據(jù)表中的數(shù)據(jù)導(dǎo)入所述新版本數(shù)據(jù)表。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述對所述第一數(shù)據(jù)庫文件和所述第二數(shù)據(jù)庫文件中存儲的表結(jié)構(gòu)信息進(jìn)行比對,獲得表結(jié)構(gòu)差異信息步驟包括: 逐行對所述第一數(shù)據(jù)庫文件和所述第二數(shù)據(jù)庫文件中存儲的相對應(yīng)的各個(gè)數(shù)據(jù)表的表結(jié)構(gòu)信息進(jìn)行比對,獲得各個(gè)數(shù)據(jù)表的表結(jié)構(gòu)差異。
      3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述依據(jù)所述表結(jié)構(gòu)差異信息和所述第一數(shù)據(jù)庫文件中的所述舊版本數(shù)據(jù)表中的數(shù)據(jù),生成所述新版本數(shù)據(jù)表中的數(shù)據(jù)步驟包括: 依據(jù)獲得的所述各個(gè)數(shù)據(jù)表的表結(jié)構(gòu)差異,結(jié)合所述第一數(shù)據(jù)庫文件中、各個(gè)舊版本數(shù)據(jù)表中未發(fā)生變化的表結(jié)構(gòu)部分對應(yīng)的數(shù)據(jù),和設(shè)定的、對應(yīng)于所述各個(gè)數(shù)據(jù)表的發(fā)生表結(jié)構(gòu)變化部分的默認(rèn)數(shù)據(jù),在所述第二數(shù)據(jù)庫文件中生成所述新版本數(shù)據(jù)表中的數(shù)據(jù)。
      4.根據(jù)權(quán)利要求1至3任一項(xiàng)所述的方法,其特征在于,所述將生成的所述新版本數(shù)據(jù)表中的數(shù)據(jù)導(dǎo)入所述新版本數(shù)據(jù)表步驟包括: 在使用所述第二數(shù)據(jù)庫文件中的所述新版本數(shù)據(jù)表中的數(shù)據(jù),向所述新版本數(shù)據(jù)表中導(dǎo)入數(shù)據(jù)時(shí),逐條逐字段判斷所述新版本數(shù)據(jù)表中待導(dǎo)入的字段下是否已經(jīng)存儲有數(shù)據(jù);若已存儲,則放棄該字段的導(dǎo)入;若未存儲,則將該字段對應(yīng)的數(shù)據(jù)導(dǎo)入所述新版本數(shù)據(jù)表中。
      5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一數(shù)據(jù)庫文件和所述第二數(shù)據(jù)庫文件均為SQL文件;所述第一數(shù)據(jù)庫文件與所述第二數(shù)據(jù)庫文件中的表結(jié)構(gòu)信息與數(shù)據(jù)信息分開存儲。
      6.一種設(shè)備跨版本升級裝置,其特征在于,包括: 第一文件生成模塊,用于生成與數(shù)據(jù)庫中的舊版本數(shù)據(jù)表對應(yīng)的第一數(shù)據(jù)庫文件,其中,所述舊版本數(shù)據(jù)表為對應(yīng)于舊版本軟件的數(shù)據(jù)表,所述第一數(shù)據(jù)庫文件中包括:所述舊版本數(shù)據(jù)表的表結(jié)構(gòu)信息,和所述舊版本數(shù)據(jù)表中的數(shù)據(jù); 創(chuàng)建模塊,用于運(yùn)行新版本軟件,并在所述數(shù)據(jù)庫中創(chuàng)建與所述新版本軟件相對應(yīng)的新版本數(shù)據(jù)表,實(shí)時(shí)接收對所述新版本數(shù)據(jù)表的操作; 第二文件生成模塊,用于生成與所述新版本數(shù)據(jù)表對應(yīng)的第二數(shù)據(jù)庫文件,其中,所述第二數(shù)據(jù)庫文件中包括:所述新版本數(shù)據(jù)表的表結(jié)構(gòu)信息; 比對模塊,用于對所述第一數(shù)據(jù)庫文件和所述第二數(shù)據(jù)庫文件中存儲的表結(jié)構(gòu)信息進(jìn)行比對,獲得表結(jié)構(gòu)差異信息; 數(shù)據(jù)生成模塊,用于依據(jù)所述表結(jié)構(gòu)差異信息和所述第一數(shù)據(jù)庫文件中的所述舊版本數(shù)據(jù)表中的數(shù)據(jù),生成所述新版本數(shù)據(jù)表中的數(shù)據(jù); 數(shù)據(jù)導(dǎo)入模塊,用于將生成的所述新版本數(shù)據(jù)表中的數(shù)據(jù)導(dǎo)入所述新版本數(shù)據(jù)表。
      7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述比對模塊對所述第一數(shù)據(jù)庫文件和所述第二數(shù)據(jù)庫文件中存儲的表結(jié)構(gòu)信息進(jìn)行比對,獲得表結(jié)構(gòu)差異信息時(shí),逐行對所述第一數(shù)據(jù)庫文件和所述第二數(shù)據(jù)庫文件中存儲的相對應(yīng)的各個(gè)數(shù)據(jù)表的表結(jié)構(gòu)信息進(jìn)行比對,獲得各個(gè)數(shù)據(jù) 表的表結(jié)構(gòu)差異。
      8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述數(shù)據(jù)生成模塊依據(jù)所述表結(jié)構(gòu)差異信息和所述第一數(shù)據(jù)庫文件中的所述舊版本數(shù)據(jù)表中的數(shù)據(jù),生成所述新版本數(shù)據(jù)表中的數(shù)據(jù)時(shí): 依據(jù)獲得的所述各個(gè)數(shù)據(jù)表的表結(jié)構(gòu)差異,結(jié)合所述第一數(shù)據(jù)庫文件中、各個(gè)舊版本數(shù)據(jù)表中未發(fā)生變化的表結(jié)構(gòu)部分對應(yīng)的數(shù)據(jù),和設(shè)定的、對應(yīng)于所述各個(gè)數(shù)據(jù)表的發(fā)生表結(jié)構(gòu)變化部分的默認(rèn)數(shù)據(jù),在所述第二數(shù)據(jù)庫文件中生成所述新版本數(shù)據(jù)表中的數(shù)據(jù)。
      9.根據(jù)權(quán)利要求6至8任一項(xiàng)所述的裝置,其特征在于,所述數(shù)據(jù)導(dǎo)入模塊將生成的所述新版本數(shù)據(jù)表中的數(shù)據(jù)導(dǎo)入所述新版本數(shù)據(jù)表時(shí): 在使用所述第二數(shù)據(jù)庫文件中的所述新版本數(shù)據(jù)表中的數(shù)據(jù),向所述新版本數(shù)據(jù)表中導(dǎo)入數(shù)據(jù)時(shí),逐條逐字段判斷所述新版本數(shù)據(jù)表中待導(dǎo)入的字段下是否已經(jīng)存儲有數(shù)據(jù);若已存儲,則放棄該字段的導(dǎo)入;若未存儲,則將該字段對應(yīng)的數(shù)據(jù)導(dǎo)入所述新版本數(shù)據(jù)表中。
      10.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述第一數(shù)據(jù)庫文件和所述第二數(shù)據(jù)庫文件均為SQL文件;所述第一數(shù)據(jù)庫文件與所述第二數(shù)據(jù)庫文件中的表結(jié)構(gòu)信息與數(shù)據(jù)信息分開存儲。
      【文檔編號】G06F17/30GK103995854SQ201410201310
      【公開日】2014年8月20日 申請日期:2014年5月13日 優(yōu)先權(quán)日:2014年5月13日
      【發(fā)明者】肖浩, 楊明成 申請人:大唐移動通信設(shè)備有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1