專利名稱:地質(zhì)礦產(chǎn)空間數(shù)據(jù)的快速轉(zhuǎn)換技術(shù)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及地質(zhì)礦產(chǎn)空間數(shù)據(jù)的快速轉(zhuǎn)換技術(shù)方法,一種高效的數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫
中的方法。
背景技術(shù):
隨著信息時代的到來,多種多樣的數(shù)據(jù)信息迅速膨脹,為了便于信息共享、便于對 數(shù)據(jù)有效管理以及對數(shù)據(jù)進(jìn)行挖掘,以提取對我們有用的知識,需要把各種大量數(shù)據(jù)存儲 到數(shù)據(jù)庫中。研究一種快速高效的數(shù)據(jù)入庫的方法是非常有必要的,而在實際的工作中,一 般有兩種方式來完成把數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫中一種是通過手工在數(shù)據(jù)庫中建表、手工進(jìn)行 錄入數(shù)據(jù),這種方法效率非常低下;另一種則是通過編寫SQL語句、調(diào)用本地數(shù)據(jù)庫自帶程 序進(jìn)行數(shù)據(jù)的導(dǎo)入,該方法對用戶的技術(shù)水平要求較高,而且移植性非常差,只能局限于本 地數(shù)據(jù)庫甚至某個數(shù)據(jù)表,效率仍然很低。
發(fā)明內(nèi)容
本發(fā)明目的在于,提供一種地質(zhì)礦產(chǎn)空間數(shù)據(jù)的快速轉(zhuǎn)換技術(shù)方法,該方法是一 種數(shù)據(jù)信息高效導(dǎo)入數(shù)據(jù)庫的方法,是以任意格式的數(shù)據(jù)作為數(shù)據(jù)源,通過格式轉(zhuǎn)化和操 作后臺數(shù)據(jù)庫等步驟,將數(shù)據(jù)信息導(dǎo)入后臺數(shù)據(jù)庫的方法,具體步驟為獲取數(shù)據(jù)對象、數(shù)據(jù) 檢查、獲取數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)格式轉(zhuǎn)換、生成相關(guān)的臨時數(shù)據(jù)文件、鏈接后臺數(shù)據(jù)庫、初始化數(shù) 據(jù)庫中的表結(jié)構(gòu)、導(dǎo)入數(shù)據(jù)和刪除多余的臨時數(shù)據(jù)文件;本發(fā)明所述的方法已解決現(xiàn)有技 術(shù)的效率低和可移植性差的問題。 本發(fā)明所述的一種地質(zhì)礦產(chǎn)空間數(shù)據(jù)的快速轉(zhuǎn)換方法,按下列步驟進(jìn)行 a、獲取數(shù)據(jù)對象入庫的數(shù)據(jù)為任意格式的數(shù)據(jù)源,針對不同的數(shù)據(jù)源,內(nèi)置有不
同的數(shù)據(jù)對象的獲取方法; b、數(shù)據(jù)檢查檢查是否有特殊字符,是否有空值; C、獲取數(shù)據(jù)結(jié)構(gòu)獲取要導(dǎo)入數(shù)據(jù)對象主要信息,如表名、列名、數(shù)據(jù)庫名,向用戶 提前發(fā)布相關(guān)入庫信息,以便及時調(diào)整,避免數(shù)據(jù)庫混亂; d、數(shù)據(jù)格式轉(zhuǎn)換包括轉(zhuǎn)換成入庫支持的數(shù)據(jù)文件和對轉(zhuǎn)換后數(shù)據(jù)文件的處理兩 部分; e、生成相關(guān)的臨時數(shù)據(jù)文件操縱后臺數(shù)據(jù)庫以及數(shù)據(jù)的導(dǎo)入會生成一些臨時性 的數(shù)據(jù)文件; f、鏈接后臺數(shù)據(jù)庫嵌入在建表和導(dǎo)入數(shù)據(jù)時自動完成; g、初始化數(shù)據(jù)庫中的表結(jié)構(gòu)自動調(diào)用不同數(shù)據(jù)庫自帶的不同的建表程序語言鏈 接數(shù)據(jù)庫,按指定格式初始化數(shù)據(jù)庫中的表結(jié)構(gòu); h、導(dǎo)入數(shù)據(jù)調(diào)用相應(yīng)的功能模塊或程序完成對數(shù)據(jù)的入庫; i、刪除多余的臨時數(shù)據(jù)文件具備把整個過程中生成的臨時性的數(shù)據(jù)文件的自動 刪除功能。
本發(fā)明所述的方法是在長期的數(shù)據(jù)庫建設(shè)實踐中,以及對多種數(shù)據(jù)來源的數(shù)據(jù)進(jìn) 行研究、分析基礎(chǔ)之上,利用相關(guān)計算機(jī)技術(shù)和數(shù)據(jù)庫技術(shù)而完成的。本發(fā)明所述方法與現(xiàn) 有技術(shù)相比其優(yōu)點為 操作簡單,對用戶的技術(shù)水平要求低,本發(fā)明的目標(biāo)用戶面向普通用戶,也是本著 這個原則進(jìn)行精心設(shè)計的。用戶不需要掌握任何程序設(shè)計語言,也不用掌握數(shù)據(jù)庫相關(guān)技 術(shù),操作非常簡單,都是選擇性的點擊式操作; 支持多種數(shù)據(jù)源無論是表數(shù)據(jù)還是文檔數(shù)據(jù),還是其他任意格式數(shù)據(jù),用戶都可 以自由選擇,針對不同的數(shù)據(jù)源內(nèi)置有不同的數(shù)據(jù)高效導(dǎo)入方法; 能夠面向多種數(shù)據(jù)庫,可以根據(jù)本地數(shù)據(jù)庫類型,自由選擇要導(dǎo)入的數(shù)據(jù)庫類型 以及數(shù)據(jù)庫名稱,具有較高的靈活性; 效率高設(shè)計中針對不同的數(shù)據(jù)庫有不同的數(shù)據(jù)導(dǎo)入方式,都是和所鏈接數(shù)據(jù)庫 緊密結(jié)合的導(dǎo)入工具以及高效的導(dǎo)入算法,同時支持批量導(dǎo)入,這都大大提高了數(shù)據(jù)入庫 的效率; 移植性高本發(fā)明移植到任何一臺計算機(jī)上,無需修改任何代碼即可使用所有功
圖1為發(fā)明數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫流程圖
圖2為本發(fā)明的數(shù)據(jù)轉(zhuǎn)換界面圖;
圖3為本發(fā)明的數(shù)據(jù)轉(zhuǎn)換流程圖
具體實施例方式
由于本發(fā)明是面向多數(shù)據(jù)源和多數(shù)據(jù)庫的,考慮到在實際工作中,大都是以數(shù)據(jù) 表的形式作為數(shù)據(jù)源而入庫的,現(xiàn)以Excel數(shù)據(jù)表導(dǎo)入Oracle數(shù)據(jù)庫為例
獲取Excel對象在.NET中利用Excel COM組件來獲取Excel表,這必須在本工程 中添加相應(yīng)的COM組件和引用,本工程中Excel COM組件為Microsoft Excel 11.0 Object Library, usingMicrosoft. Office. Interop j 數(shù)據(jù)檢查首先檢查打開的Excel表中是否有數(shù)據(jù),是否有特殊字符,以避免格式 轉(zhuǎn)換時丟失數(shù)據(jù)信息,以及檢查在將要設(shè)置的主鍵和外鍵(如果有)所對應(yīng)的列中是否有 空值存在,避免數(shù)據(jù)導(dǎo)入時發(fā)生錯誤;再則就是檢查用戶指定的數(shù)據(jù)表名是否與原來數(shù)據(jù) 庫中的表重名,默認(rèn)情況下是向原表追加數(shù)據(jù); 獲取Excel數(shù)據(jù)表的結(jié)構(gòu)主要是獲取用戶指定要建的表名、Excel數(shù)據(jù)表的列 數(shù)和列名、要導(dǎo)入的數(shù)據(jù)庫名等,并在入庫之前向用戶公布相關(guān)信息,用戶確定滿意后即 可繼續(xù)進(jìn)行,否則,用戶可以自行調(diào)整,以避免創(chuàng)建錯表,導(dǎo)致數(shù)據(jù)庫混亂。本步驟用到了 Microsoft. Jet. OLEDB. 4. 0數(shù)據(jù)庫提供程序,獲得Excel表頭,并將其存在內(nèi)存中數(shù)據(jù)表 中; 數(shù)據(jù)格式轉(zhuǎn)換由于Oracle數(shù)據(jù)庫不支持Excel數(shù)據(jù)的直接導(dǎo)入,需要保存為 相應(yīng)格式的文件,才能將其導(dǎo)入數(shù)據(jù)庫,本例是將其轉(zhuǎn)換為CSV格式的文件,并對轉(zhuǎn)換后的 CSV文件進(jìn)行了處理包括去掉CSV文件的表頭和處理最后一個字段為null的情況;
生成相關(guān)的臨時數(shù)據(jù)文件主要是生成臨時的控制文件和臨時的初始化Oracle 表結(jié)構(gòu)的文件,控制文件將在后面調(diào)用Oracle的SQLLoader函數(shù)進(jìn)行數(shù)據(jù)的導(dǎo)入時用到, 調(diào)用SQLPLUS命令來建表時將用到初始化表文件; 鏈接后臺數(shù)據(jù)庫本步驟是嵌入在建表和導(dǎo)入數(shù)據(jù)時自動完成的,至于鏈接到哪 個數(shù)據(jù)庫,在哪個數(shù)據(jù)庫中建表完全由用戶指定; 初始化數(shù)據(jù)庫中的表結(jié)構(gòu)使用生成的臨時的初始化表結(jié)構(gòu)的文件,調(diào)用 SQLPLUS命令按指定樣式建表,本功能完全有計算機(jī)自動進(jìn)行,以替代了人工建表的繁瑣;
導(dǎo)入數(shù)據(jù)由于SQLLoader功能函數(shù)與SQLLoader功能函數(shù)oracle支持?jǐn)?shù)據(jù)導(dǎo)入 的切身工具,既方便又高效,本實例就巧妙地調(diào)用了 Oracle自帶的SQLLoader功能函數(shù)和 生成的自動控制文件完成對數(shù)據(jù)高效入庫;并且根據(jù)用戶所選的數(shù)據(jù)表支持同結(jié)構(gòu)表批量 導(dǎo)入,這又大大提高了導(dǎo)入的效率; 刪除多余的臨時數(shù)據(jù)文件編寫了程序代碼實現(xiàn)了導(dǎo)入過程中臨時文件的及時自
動刪除功能,導(dǎo)入一張表立即刪除相應(yīng)的臨時文件,以避免大量多余文件的繁雜。 上述所有步驟都是在VS2005. NET平臺上通過編程來實現(xiàn)的,其主界面參見圖2。
權(quán)利要求
一種地質(zhì)礦產(chǎn)空間數(shù)據(jù)的快速轉(zhuǎn)換技術(shù)方法,其特征在于按下列步驟進(jìn)行a、獲取數(shù)據(jù)對象入庫的數(shù)據(jù)為任意格式的數(shù)據(jù)源,針對不同的數(shù)據(jù)源,內(nèi)置有不同的數(shù)據(jù)對象的獲取方法;b、數(shù)據(jù)檢查檢查是否有特殊字符,是否有空值;c、獲取數(shù)據(jù)結(jié)構(gòu)獲取要導(dǎo)入數(shù)據(jù)對象主要信息,如表名、列名、數(shù)據(jù)庫名,向用戶提前發(fā)布相關(guān)入庫信息,以便及時調(diào)整,避免數(shù)據(jù)庫混亂;d、數(shù)據(jù)格式轉(zhuǎn)換包括轉(zhuǎn)換成入庫支持的數(shù)據(jù)文件和對轉(zhuǎn)換后數(shù)據(jù)文件的處理兩部分;e、生成相關(guān)的臨時數(shù)據(jù)文件操縱后臺數(shù)據(jù)庫以及數(shù)據(jù)的導(dǎo)入會生成一些臨時性的數(shù)據(jù)文件;f、鏈接后臺數(shù)據(jù)庫嵌入在建表和導(dǎo)入數(shù)據(jù)時自動完成;g、初始化數(shù)據(jù)庫中的表結(jié)構(gòu)自動調(diào)用不同數(shù)據(jù)庫自帶的不同的建表程序語言鏈接數(shù)據(jù)庫,按指定格式初始化數(shù)據(jù)庫中的表結(jié)構(gòu);h、導(dǎo)入數(shù)據(jù)調(diào)用相應(yīng)的功能模塊或程序完成對數(shù)據(jù)的入庫;i、刪除多余的臨時數(shù)據(jù)文件具備把整個過程中生成的臨時性的數(shù)據(jù)文件的自動刪除功能。
全文摘要
本發(fā)明涉及一種地質(zhì)礦產(chǎn)空間數(shù)據(jù)的快速轉(zhuǎn)換技術(shù)方法,該方法是一種數(shù)據(jù)信息高效導(dǎo)入數(shù)據(jù)庫的方法,是以任意格式的數(shù)據(jù)作為數(shù)據(jù)源,通過格式轉(zhuǎn)化和操作后臺數(shù)據(jù)庫等步驟,將數(shù)據(jù)信息導(dǎo)入后臺數(shù)據(jù)庫的方法,具體步驟為獲取數(shù)據(jù)對象、數(shù)據(jù)檢查、獲取數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)格式轉(zhuǎn)換、生成相關(guān)的臨時數(shù)據(jù)文件、鏈接后臺數(shù)據(jù)庫、初始化數(shù)據(jù)庫中的表結(jié)構(gòu)、導(dǎo)入數(shù)據(jù)和刪除多余的臨時數(shù)據(jù)文件;本發(fā)明所述的方法已解決現(xiàn)有技術(shù)的效率低和可移植性差的問題。
文檔編號G06F17/30GK101719126SQ200910113558
公開日2010年6月2日 申請日期2009年12月7日 優(yōu)先權(quán)日2009年12月7日
發(fā)明者劉朝霞, 周可法, 孫莉, 孫雷剛, 常想德, 張楠楠, 張海波, 張清, 李明明, 王桂剛, 秦艷芳, 程宛文, 許文強 申請人:中國科學(xué)院新疆生態(tài)與地理研究所