一種在不同類型數(shù)據(jù)庫間導(dǎo)出導(dǎo)入二進(jìn)制文件的方法【專利摘要】本發(fā)明公開了一種在不同類型數(shù)據(jù)庫間導(dǎo)出導(dǎo)入二進(jìn)制文件的方法,所述方法將源數(shù)據(jù)庫數(shù)據(jù)導(dǎo)出成二進(jìn)制文件,該二進(jìn)制文件與操作系統(tǒng)平臺(tái)、源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫類型無關(guān),將生成的二進(jìn)制文件拷貝到目標(biāo)數(shù)據(jù)庫主機(jī)上,再將該二進(jìn)制文件中的數(shù)據(jù)導(dǎo)入到目標(biāo)數(shù)據(jù)庫。本發(fā)明方法無需對(duì)源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫做太多的調(diào)研,減少了很多工作量,將精力可以集中在存儲(chǔ)過程、函數(shù)、無法導(dǎo)入數(shù)據(jù)的處理上,縮短數(shù)據(jù)遷移周期,對(duì)數(shù)據(jù)遷移工程師技術(shù)水平要求不高,降低了對(duì)數(shù)據(jù)遷移工程師的技術(shù)要求。【專利說明】一種在不同類型數(shù)據(jù)庫間導(dǎo)出導(dǎo)入二進(jìn)制文件的方法
技術(shù)領(lǐng)域:
[0001]本發(fā)明涉及數(shù)據(jù)庫
技術(shù)領(lǐng)域:
,具體涉及一種在不同類型數(shù)據(jù)庫間導(dǎo)出導(dǎo)入二進(jìn)制文件的方法。【
背景技術(shù):
】[0002]目前部分?jǐn)?shù)據(jù)庫可以通過將數(shù)據(jù)導(dǎo)出成二進(jìn)制文件,然后將二進(jìn)制文件導(dǎo)入到另一個(gè)相同類型數(shù)據(jù)庫中的方式實(shí)例在相同類型數(shù)據(jù)庫間的數(shù)據(jù)迀移,比如=ORACLE數(shù)據(jù)庫可以使用exp/expdp導(dǎo)出數(shù)據(jù)庫,使用imp/impdp導(dǎo)入數(shù)據(jù)庫。無法通過導(dǎo)出導(dǎo)入二進(jìn)制文件的方式在不同類型數(shù)據(jù)庫間迀移數(shù)據(jù)庫數(shù)據(jù)。在不同類型數(shù)據(jù)庫間迀移數(shù)據(jù),一般都是先將源數(shù)據(jù)庫數(shù)據(jù)導(dǎo)出成平滑文件(文本文件),然后再在目標(biāo)數(shù)據(jù)庫使用平滑文件導(dǎo)入,這種迀移方式具有導(dǎo)出導(dǎo)入效率低、操作非常繁瑣、數(shù)據(jù)出錯(cuò)率高、迀移消耗時(shí)間長等缺點(diǎn),給異構(gòu)數(shù)據(jù)庫間的數(shù)據(jù)迀移帶來很大困難?!?br/>發(fā)明內(nèi)容】[0003]本發(fā)明要解決的技術(shù)問題是:本發(fā)明針對(duì)現(xiàn)有技術(shù)的不足之處,提供一種在不同類型數(shù)據(jù)庫間導(dǎo)出導(dǎo)入二進(jìn)制文件的方法。[0004]本發(fā)明所采用的技術(shù)方案為:一種在不同類型數(shù)據(jù)庫間導(dǎo)出導(dǎo)入二進(jìn)制文件的方法,所述方法將源數(shù)據(jù)庫數(shù)據(jù)導(dǎo)出成二進(jìn)制文件,該二進(jìn)制文件與操作系統(tǒng)平臺(tái)、源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫類型無關(guān),將生成的二進(jìn)制文件拷貝到目標(biāo)數(shù)據(jù)庫主機(jī)上,再將該二進(jìn)制文件中的數(shù)據(jù)導(dǎo)入到目標(biāo)數(shù)據(jù)庫。[0005]所述方法涉及應(yīng)用模塊包括:1)數(shù)據(jù)庫連接配置模塊,內(nèi)容包括所連接數(shù)據(jù)庫主機(jī)IP地址、數(shù)據(jù)庫連接驅(qū)動(dòng)、數(shù)據(jù)庫名稱、用戶名、密碼等,根據(jù)連接數(shù)據(jù)庫類型不同,內(nèi)容格式略有不同,其中URL中內(nèi)容為JDBC連接數(shù)據(jù)庫的通用格式;2)數(shù)據(jù)導(dǎo)出模塊,使用導(dǎo)出命令:dataexp;3)數(shù)據(jù)導(dǎo)入模塊,使用導(dǎo)入命令:dataimp;4)二進(jìn)制文件模塊,由file參數(shù)指定,為二進(jìn)制格式,在開頭預(yù)留1K空間用于存放該二進(jìn)制文件中所有表名稱、表所屬用戶、表數(shù)據(jù)在二進(jìn)制文件中最開始的位置,后面空間每IM為一個(gè)單位用于存儲(chǔ)表數(shù)據(jù),相同表的存儲(chǔ)單元以單向鏈表的格式進(jìn)行鏈接。[0006]所述應(yīng)用模塊分別安裝在源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫主機(jī)上,通過JDBC方式連接源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫,在源數(shù)據(jù)庫主機(jī)上配置數(shù)據(jù)庫連接配置模塊,使其正確連接到源數(shù)據(jù)庫;調(diào)用數(shù)據(jù)導(dǎo)出模塊,使用導(dǎo)出命令,導(dǎo)出操作生成二進(jìn)制文件;在目標(biāo)數(shù)據(jù)庫主機(jī)上配置數(shù)據(jù)庫連接配置模塊,使其正確連接到目標(biāo)數(shù)據(jù)庫,調(diào)用數(shù)據(jù)導(dǎo)入模塊將二進(jìn)制文件拷貝到目標(biāo)數(shù)據(jù)庫主機(jī),完成數(shù)據(jù)庫間數(shù)據(jù)的迀移。[0007]在數(shù)據(jù)導(dǎo)入模塊中通過使用sourcetype指定生成二進(jìn)制文件的源數(shù)據(jù)庫類型,使用targettype指定將要導(dǎo)入二進(jìn)制文件的目標(biāo)數(shù)據(jù)庫類型,在導(dǎo)入時(shí)會(huì)根據(jù)sourcetype和targettype參數(shù)的值進(jìn)行自動(dòng)的轉(zhuǎn)換,以便適應(yīng)目標(biāo)數(shù)據(jù)庫。[0008]所述方法操作流程如下:1)將所述功能模塊上傳源數(shù)據(jù)庫主機(jī)和目標(biāo)數(shù)據(jù)庫主機(jī),安裝jdbc驅(qū)動(dòng)程序;2)數(shù)據(jù)庫連接配置模塊通過配置“數(shù)據(jù)庫連接配置文件”,以正常連接到源和目標(biāo)數(shù)據(jù)庫;3)數(shù)據(jù)庫連接正常后即可通過數(shù)據(jù)導(dǎo)出模塊進(jìn)行數(shù)據(jù)庫導(dǎo)出操作;4)導(dǎo)出完成后,將這些導(dǎo)出文件拷貝到目標(biāo)數(shù)據(jù)庫主機(jī)通過數(shù)據(jù)導(dǎo)入模塊導(dǎo)入;5)檢查數(shù)據(jù)是否完全導(dǎo)入,對(duì)無法導(dǎo)入的數(shù)據(jù)進(jìn)行處理。[0009]本發(fā)明的有益效果為:本發(fā)明方法無需對(duì)源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫做太多的調(diào)研,減少了很多工作量,將精力可以集中在存儲(chǔ)過程、函數(shù)、無法導(dǎo)入數(shù)據(jù)的處理上,縮短數(shù)據(jù)迀移周期,對(duì)數(shù)據(jù)迀移工程師技術(shù)水平要求不高,降低了對(duì)數(shù)據(jù)迀移工程師的技術(shù)要求?!靖綀D說明】[0010]圖1為本發(fā)明二進(jìn)制文件存儲(chǔ)格式示意圖?!揪唧w實(shí)施方式】[0011]下面結(jié)合說明書附圖,根據(jù)【具體實(shí)施方式】對(duì)本發(fā)明進(jìn)一步說明:實(shí)施例1:一種在不同類型數(shù)據(jù)庫間導(dǎo)出導(dǎo)入二進(jìn)制文件的方法,所述方法通過將源數(shù)據(jù)庫數(shù)據(jù)導(dǎo)出成二進(jìn)制文件,該二進(jìn)制文件與操作系統(tǒng)平臺(tái)、源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫類型無關(guān),將生成的二進(jìn)制文件拷貝到目標(biāo)數(shù)據(jù)庫主機(jī)上,再將該二進(jìn)制文件中的數(shù)據(jù)導(dǎo)入到目標(biāo)數(shù)據(jù)庫。所述方法能夠提高異構(gòu)數(shù)據(jù)庫間數(shù)據(jù)迀移效率,縮短數(shù)據(jù)迀移周期。[0012]實(shí)施例2在實(shí)施例1的基礎(chǔ)上,本實(shí)施例所述方法涉及應(yīng)用模塊包括:1)數(shù)據(jù)庫連接配置模塊,內(nèi)容包括所連接數(shù)據(jù)庫主機(jī)IP地址、數(shù)據(jù)庫連接驅(qū)動(dòng)、數(shù)據(jù)庫名稱、用戶名、密碼等,根據(jù)連接數(shù)據(jù)庫類型不同,內(nèi)容格式略有不同,其中URL中內(nèi)容為JDBC連接數(shù)據(jù)庫的通用格式;2)數(shù)據(jù)導(dǎo)出模塊,使用導(dǎo)出命令:dataexp,命令參數(shù):file(生成二進(jìn)制文件路徑及名稱,名稱可以使用通配符)、log(生成導(dǎo)出過程日志文件路徑及名稱)、parallel(并行操作的個(gè)數(shù))、如11(¥屮,是否全庫導(dǎo)出)、%化1^8(導(dǎo)出用戶名列表,多個(gè)用戶名以逗號(hào)隔開)、tables(導(dǎo)出表名列表,多個(gè)表名以逗號(hào)隔開)、optype(操作類型:metadata_only只導(dǎo)出表定義,data_only只導(dǎo)出表數(shù)據(jù),all導(dǎo)出表定義及數(shù)據(jù),默認(rèn)為all)、size(單個(gè)二進(jìn)制文件大小)等;可以針對(duì)全庫、部分用戶、部分表進(jìn)行數(shù)據(jù)導(dǎo)出,將導(dǎo)出數(shù)據(jù)生成二進(jìn)制文件,導(dǎo)出時(shí)可以開啟多并發(fā)加快導(dǎo)出速度;導(dǎo)出語句樣例:dataexpfile=/tmp/dataexp/userfiles.dplog=/tmp/dataexp/userfiIes.logschemas=userl,user2size=10G3)數(shù)據(jù)導(dǎo)入模塊,使用導(dǎo)入命令:dataimp,命令參數(shù):file(生成二進(jìn)制文件名稱,多個(gè)文件以逗號(hào)隔開)、log(生成導(dǎo)出過程日志文件名稱)、parallel(并行操作的個(gè)數(shù))、schemas(導(dǎo)入用戶名列表)、tables(導(dǎo)入表名列表)、optype(操作類型:只導(dǎo)入表定義,只導(dǎo)入表數(shù)據(jù),導(dǎo)入表定義及數(shù)據(jù))、sourcetype(源數(shù)據(jù)庫類型:db2,oracle,mysql,sqlserver等)、targettype(目標(biāo)數(shù)據(jù)庫類型:db2,oracle,mysql,sqlserver等)等;可以根據(jù)需要從二進(jìn)制文件中全部導(dǎo)入、部分用戶導(dǎo)入、部分表導(dǎo)入,導(dǎo)入時(shí)可以開啟多并發(fā)加快導(dǎo)出速度;導(dǎo)入語句樣例:dataexpfHe=/tmp/dataexp/userfiIes1.dp,/tmp/dataexp/userfiles2.dplog=/tmp/dataexp/userfiles.logsourcetype=db2targettype=oracle4)二進(jìn)制文件模塊,由file參數(shù)指定,可以是通配符以便生成多個(gè)文件,為二進(jìn)制格式,在開頭預(yù)留1K空間用于存放該二進(jìn)制文件中所有表名稱、表所屬用戶、表數(shù)據(jù)在二進(jìn)制文件中最開始的位置,后面空間每IM為一個(gè)單位用于存儲(chǔ)表數(shù)據(jù),相同表的存儲(chǔ)單元以單向鏈表的格式進(jìn)行鏈接,存儲(chǔ)格式如圖1所示。[0013]實(shí)施例3在實(shí)施例2的基礎(chǔ)上,本實(shí)施例所述應(yīng)用模塊分別安裝在源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫主機(jī)上,通過JDBC方式連接源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫,在源數(shù)據(jù)庫主機(jī)上配置數(shù)據(jù)庫連接配置模塊,該配置文件中配置信息有:源數(shù)據(jù)庫主機(jī)IP地址、數(shù)據(jù)庫名稱、用戶名、密碼等,使其正確連接到源數(shù)據(jù)庫;調(diào)用數(shù)據(jù)導(dǎo)出模塊,使用導(dǎo)出命令,根據(jù)需要選擇全庫導(dǎo)出、部分用戶導(dǎo)出、部分表導(dǎo)出等操作,導(dǎo)出操作生成二進(jìn)制文件;在目標(biāo)數(shù)據(jù)庫主機(jī)上配置數(shù)據(jù)庫連接配置模塊,使其正確連接到目標(biāo)數(shù)據(jù)庫,調(diào)用數(shù)據(jù)導(dǎo)入模塊將二進(jìn)制文件拷貝到目標(biāo)數(shù)據(jù)庫主機(jī),使用該二進(jìn)制文件根據(jù)需要選擇全庫導(dǎo)入、部分用戶導(dǎo)入、部分表導(dǎo)入等操作,完成數(shù)據(jù)庫間數(shù)據(jù)的迀移。[0014]實(shí)施例4在2或3任一實(shí)施例的基礎(chǔ)上,本實(shí)施例由于源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫可能會(huì)在SQL語法、數(shù)據(jù)類型、字體長度等方面存在差別,在數(shù)據(jù)導(dǎo)入模塊中通過使用sourcetype指定生成二進(jìn)制文件的源數(shù)據(jù)庫類型,使用targettype指定將要導(dǎo)入二進(jìn)制文件的目標(biāo)數(shù)據(jù)庫類型,在導(dǎo)入時(shí)會(huì)根據(jù)sourcetype和targettype參數(shù)的值進(jìn)行自動(dòng)的轉(zhuǎn)換,以便適應(yīng)目標(biāo)數(shù)據(jù)庫。[0015]實(shí)施例5在實(shí)施例4的基礎(chǔ)上,本實(shí)施例所述方法針對(duì)AIX、HPUX、LINUX、WINDOWS、K-UX等平臺(tái)發(fā)布相應(yīng)平臺(tái)介質(zhì),操作流程如下:1)將所述功能模塊上傳源數(shù)據(jù)庫主機(jī)和目標(biāo)數(shù)據(jù)庫主機(jī),安裝jdbc驅(qū)動(dòng)程序;2)數(shù)據(jù)庫連接配置模塊通過配置“數(shù)據(jù)庫連接配置文件”,以正常連接到源和目標(biāo)數(shù)據(jù)庫;3)數(shù)據(jù)庫連接正常后即可通過數(shù)據(jù)導(dǎo)出模塊進(jìn)行數(shù)據(jù)庫導(dǎo)出操作,根據(jù)需要使用dataexp命令指定fiIe、log等參數(shù)開始導(dǎo)出,導(dǎo)出過程通過查看log指定的文件進(jìn)行監(jiān)控,導(dǎo)出單個(gè)文件大小通過size進(jìn)行指定,對(duì)于導(dǎo)出數(shù)據(jù)量較大的,可以生成多個(gè)數(shù)據(jù)文件;4)導(dǎo)出完成后,將這些導(dǎo)出文件拷貝到目標(biāo)數(shù)據(jù)庫主機(jī)通過數(shù)據(jù)導(dǎo)入模塊導(dǎo)入,使用dataimp命令進(jìn)行導(dǎo)入,fiIe指定二進(jìn)制文件列表,使用sourcetype指定生成二進(jìn)制文件的源數(shù)據(jù)庫類型,使用targettype指定將要導(dǎo)入二進(jìn)制文件的目標(biāo)數(shù)據(jù)庫類型,開始導(dǎo)入后通過log指定的文件進(jìn)行監(jiān)控;5)檢查數(shù)據(jù)是否完全導(dǎo)入,對(duì)無法導(dǎo)入的數(shù)據(jù)進(jìn)行處理。[0016]實(shí)施方式僅用于說明本發(fā)明,而并非對(duì)本發(fā)明的限制,有關(guān)
技術(shù)領(lǐng)域:
的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護(hù)范圍應(yīng)由權(quán)利要求限定。【主權(quán)項(xiàng)】1.一種在不同類型數(shù)據(jù)庫間導(dǎo)出導(dǎo)入二進(jìn)制文件的方法,其特征在于:所述方法將源數(shù)據(jù)庫數(shù)據(jù)導(dǎo)出成二進(jìn)制文件,該二進(jìn)制文件與操作系統(tǒng)平臺(tái)、源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫類型無關(guān),將生成的二進(jìn)制文件拷貝到目標(biāo)數(shù)據(jù)庫主機(jī)上,再將該二進(jìn)制文件中的數(shù)據(jù)導(dǎo)入到目標(biāo)數(shù)據(jù)庫。2.根據(jù)權(quán)利要求1所述的一種在不同類型數(shù)據(jù)庫間導(dǎo)出導(dǎo)入二進(jìn)制文件的方法,其特征在于,所述方法涉及應(yīng)用模塊包括:I)數(shù)據(jù)庫連接配置模塊,內(nèi)容包括所連接數(shù)據(jù)庫主機(jī)IP地址、數(shù)據(jù)庫連接驅(qū)動(dòng)、數(shù)據(jù)庫名稱、用戶名、密碼等,根據(jù)連接數(shù)據(jù)庫類型不同,內(nèi)容格式略有不同,其中URL中內(nèi)容為JDBC連接數(shù)據(jù)庫的通用格式;2)數(shù)據(jù)導(dǎo)出模塊,使用導(dǎo)出命令:dataexp;3)數(shù)據(jù)導(dǎo)入模塊,使用導(dǎo)入命令:dataimp;4)二進(jìn)制文件模塊,由file參數(shù)指定,為二進(jìn)制格式,在開頭預(yù)留1K空間用于存放該二進(jìn)制文件中所有表名稱、表所屬用戶、表數(shù)據(jù)在二進(jìn)制文件中最開始的位置,后面空間每IM為一個(gè)單位用于存儲(chǔ)表數(shù)據(jù),相同表的存儲(chǔ)單元以單向鏈表的格式進(jìn)行鏈接。3.根據(jù)權(quán)利要求2所述的一種在不同類型數(shù)據(jù)庫間導(dǎo)出導(dǎo)入二進(jìn)制文件的方法,其特征在于:所述應(yīng)用模塊分別安裝在源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫主機(jī)上,通過JDBC方式連接源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫,在源數(shù)據(jù)庫主機(jī)上配置數(shù)據(jù)庫連接配置模塊,使其正確連接到源數(shù)據(jù)庫;調(diào)用數(shù)據(jù)導(dǎo)出模塊,使用導(dǎo)出命令,導(dǎo)出操作生成二進(jìn)制文件;在目標(biāo)數(shù)據(jù)庫主機(jī)上配置數(shù)據(jù)庫連接配置模塊,使其正確連接到目標(biāo)數(shù)據(jù)庫,調(diào)用數(shù)據(jù)導(dǎo)入模塊將二進(jìn)制文件拷貝到目標(biāo)數(shù)據(jù)庫主機(jī),完成數(shù)據(jù)庫間數(shù)據(jù)的迀移。4.根據(jù)權(quán)利要求2或3任一所述的一種在不同類型數(shù)據(jù)庫間導(dǎo)出導(dǎo)入二進(jìn)制文件的方法,其特征在于:在數(shù)據(jù)導(dǎo)入模塊中通過使用sourcetype指定生成二進(jìn)制文件的源數(shù)據(jù)庫類型,使用targettype指定將要導(dǎo)入二進(jìn)制文件的目標(biāo)數(shù)據(jù)庫類型,在導(dǎo)入時(shí)會(huì)根據(jù)sourcetype和targettype參數(shù)的值進(jìn)行自動(dòng)的轉(zhuǎn)換,以便適應(yīng)目標(biāo)數(shù)據(jù)庫。5.根據(jù)權(quán)利要求4所述的一種在不同類型數(shù)據(jù)庫間導(dǎo)出導(dǎo)入二進(jìn)制文件的方法,其特征在于,所述方法操作流程如下:1)將所述功能模塊上傳源數(shù)據(jù)庫主機(jī)和目標(biāo)數(shù)據(jù)庫主機(jī),安裝jdbc驅(qū)動(dòng)程序;2)數(shù)據(jù)庫連接配置模塊通過配置“數(shù)據(jù)庫連接配置文件”,以正常連接到源和目標(biāo)數(shù)據(jù)庫;3)數(shù)據(jù)庫連接正常后即可通過數(shù)據(jù)導(dǎo)出模塊進(jìn)行數(shù)據(jù)庫導(dǎo)出操作;4)導(dǎo)出完成后,將這些導(dǎo)出文件拷貝到目標(biāo)數(shù)據(jù)庫主機(jī)通過數(shù)據(jù)導(dǎo)入模塊導(dǎo)入;5)檢查數(shù)據(jù)是否完全導(dǎo)入,對(duì)無法導(dǎo)入的數(shù)據(jù)進(jìn)行處理?!疚臋n編號(hào)】G06F17/30GK105956188SQ201610396212【公開日】2016年9月21日【申請(qǐng)日】2016年6月7日【發(fā)明人】馬國良【申請(qǐng)人】浪潮電子信息產(chǎn)業(yè)股份有限公司