謝英輝 鄧子云
(1.長沙民政職業(yè)技術(shù)學(xué)院,湖南 長沙 410004;2.湖南現(xiàn)代物流職業(yè)技術(shù)學(xué)院,湖南 長沙 410131)
基于Web方式海量數(shù)據(jù)上傳與導(dǎo)入的解決方案
謝英輝1鄧子云2
(1.長沙民政職業(yè)技術(shù)學(xué)院,湖南 長沙 410004;2.湖南現(xiàn)代物流職業(yè)技術(shù)學(xué)院,湖南 長沙 410131)
作者在文中介紹了傳統(tǒng)方法在解決海量數(shù)據(jù)從客戶端導(dǎo)入到服務(wù)器數(shù)據(jù)庫時(shí)的具體問題,提出了新的解決方案,即先利用Apache公司的文件上傳組件把文件上傳到服務(wù)器的臨時(shí)目錄,然后創(chuàng)建擴(kuò)展名為“.ctl”的控制文件,再利用java語言的shell指令和線程來執(zhí)行控制文件、進(jìn)行數(shù)據(jù)導(dǎo)入,很好地解決了利用Web來實(shí)現(xiàn)大容量數(shù)據(jù)的導(dǎo)入問題,具有很高的研究和應(yīng)用價(jià)值。
海量數(shù)據(jù);企業(yè)信息化;解決方案;shell指令;線程
隨著計(jì)算機(jī)硬件、軟件的迅速發(fā)展,個(gè)人計(jì)算機(jī)逐漸進(jìn)入普通家庭,社會(huì)信息化程度有了大幅度的提高,資源共享也成了企業(yè)必須關(guān)注的重點(diǎn)。Internet互聯(lián)網(wǎng)作用和潛力無限,目前企業(yè)信息共享也主要是基于Internet來進(jìn)行的,許多公司和企業(yè)以及各政府、事業(yè)單位都建立了自己的門戶網(wǎng)站,及基于web的企業(yè)信息化辦公系統(tǒng),這些網(wǎng)站上一般都有大量的可供其它企業(yè)利用的共享資源,其中就有很多的大容量共享信息,并且容量會(huì)隨著信息化普及程度的提高而增大,而目前的一些解決方案都存在著內(nèi)存溢出、時(shí)間、地域和操作人員的高技術(shù)要求的問題,使得企業(yè)無法高效地利用和處理這些大容量信息,該問題也成了阻礙企業(yè)信息化提高的一個(gè)重要問題,為了高效利用這些信息,打破目前方法的時(shí)間、地域和操作人員技術(shù)要求的局限性,新的解決方案的提出和研究就顯得尤為重要。
目前社會(huì)信息化程度在不斷提高,但離普及各行各業(yè)還有相當(dāng)大的距離,為了滿足人們對(duì)高生活質(zhì)量的需求,信息化將普及到我們生活的每個(gè)角落,同時(shí)信息化的普及也必將給我們的生活帶來質(zhì)的提高。為了提高工作效率,企業(yè)或個(gè)人一般會(huì)想盡辦法盡可能地利用共享資料,而有很多資料也可以直接為自己所用,在獲得共享資源后,有些需要直接導(dǎo)入到自己的系統(tǒng)
中去,目前一般企業(yè)有兩種解決方法,這兩種方法都存在一定問題和局限性:
方法一是通過采用Web操作來完成,這種方法很方便,對(duì)于時(shí)間、地域和操作人員技術(shù)要求不高,它主要是通過直接把文件信息內(nèi)容通過內(nèi)存變量讀入內(nèi)存中,然后再把內(nèi)存變量里的數(shù)據(jù)取出導(dǎo)入數(shù)據(jù)庫,但這種方法只能解決小容量數(shù)據(jù)的導(dǎo)入問題,在導(dǎo)入海量數(shù)據(jù)時(shí)就會(huì)出現(xiàn)內(nèi)存溢出問題。
方法二是數(shù)據(jù)庫管理員直接啟動(dòng)服務(wù)器,利用程序命令和手動(dòng)操作以及相關(guān)輔助工具進(jìn)行數(shù)據(jù)導(dǎo)入,該種方法很適合海量數(shù)據(jù)的導(dǎo)入,但對(duì)于操作員的專業(yè)技術(shù)要求很高,并且只能在服務(wù)器上操作,而且因?yàn)閷?dǎo)入數(shù)據(jù)時(shí)間較長,中間不能出現(xiàn)導(dǎo)演中斷,否則會(huì)造成數(shù)據(jù)不完整,存在著時(shí)間、地域和專業(yè)技術(shù)要求高的局限性。
目前這兩種方法都存在問題和局限性,嚴(yán)重阻礙各行各業(yè)的信息化建設(shè),成了社會(huì)信息化建設(shè)的一個(gè)嚴(yán)重的問題。
隨著社會(huì)信息化程度的不斷提高,資源數(shù)據(jù)的共享會(huì)越來越普遍,容量也會(huì)越來越大,為了提高大容量數(shù)據(jù)的共享使用效率,簡化操作步驟,讓更多不同層次計(jì)算機(jī)操作水平的相關(guān)人員參與到信息共享中去,這就需要設(shè)計(jì)一種采用WEB方法導(dǎo)入大容量數(shù)據(jù)的方案,來代替需要有專業(yè)技術(shù)、專業(yè)工具及時(shí)間和地點(diǎn)等要求的傳統(tǒng)方案。
該方案研究需求其實(shí)也是社會(huì)應(yīng)用的一種需求,目前在信息化程度較高的國家需求更為明顯。本人在2008年的對(duì)日軟件外包開發(fā)工作過程中,有幸參與了一個(gè)有這種需求的項(xiàng)目,該項(xiàng)目是日本神戶電視臺(tái)的一個(gè)數(shù)據(jù)庫管理系統(tǒng),項(xiàng)目有一個(gè)關(guān)于郵件管理的模塊,需要實(shí)現(xiàn)從日本國家網(wǎng)站上下載一個(gè)全國所有在國家機(jī)關(guān)注冊(cè)過的正規(guī)公司的詳細(xì)信息的Excel文件,然后要把文件里的公司名和地址信息導(dǎo)入到數(shù)據(jù)庫中,當(dāng)時(shí)下載的文件容量就有15M,而且隨著注冊(cè)的公司越來越多,文件容量也會(huì)逐漸增加。
隨著信息化程度的不斷提高,這種需求將會(huì)是企業(yè)信息化建設(shè)的一種普遍需求,目前解決方案存在的問題也會(huì)越來越嚴(yán)重,因此迫切需要研究一種新的解決方案來解決。
采用JAVA開發(fā)語言;WEB服務(wù)器不限,可以是JBoss、Tomcat、Weblogic和 Enhydra等 WEB 服務(wù)器中的任何一種;操作系統(tǒng)可以是Windows系統(tǒng)或Linux系統(tǒng),數(shù)據(jù)庫必須采用Oracle數(shù)據(jù)庫,因?yàn)橐褂肙racle數(shù)據(jù)庫的sql loader工具,sql loader可以把一些以文本格式存放的數(shù)據(jù)順利地導(dǎo)入到oracle數(shù)據(jù)庫中,是一種在不同數(shù)據(jù)庫之間進(jìn)行數(shù)據(jù)遷移的非常方便而且通用的工具。并且在方案中還要用到apache公司的開源組件commons-fileupload,該組件主要用來使用WEB方法在客戶端快速上傳大容量的文件到服務(wù)器端,使用方便,易掌握,該組件主要包括common.jar、commons-fileupload-1.1.jar、commons-io- 1.1.jar和fileupload.jar等類文件,這些文件在apache公司官方網(wǎng)站上下載。
先利用appack公司的上傳組件把文件上傳到服務(wù)器,然后在服務(wù)器端打開文件,再利用Oracle數(shù)據(jù)sql loader工具把文件中指定的內(nèi)容導(dǎo)入到數(shù)據(jù)庫中,導(dǎo)入完成后刪除上傳的文件。由于需要快速向數(shù)據(jù)庫導(dǎo)入大量數(shù)據(jù),考慮到通過程序讀寫文本的方法比較慢且需占用系統(tǒng)大量的資源,所以使用sqlldr,用sqlldr批量導(dǎo)入數(shù)據(jù)非??欤茉谝恍r(shí)導(dǎo)入100G的數(shù)據(jù)。
具體步驟如下:
3.2.1 創(chuàng)建工程
3.2.2 在apache公司官方網(wǎng)站上下載文件common.jar、commons - fileupload - 1.1.jar、commons - io-1.1.jar、fileupload.jar、fileuploadsrc.zip。
3.2.3 在工程中引入 common.jar、commonsfileupload-1.1.jar、commons- io - 1.1.jar、fileupload.jar、fileuploadsrc.zip庫文件,并引入 j2ee.jar庫文件,該文件可在網(wǎng)上下載,也可在安裝的j2ee服務(wù)器里的lib目錄下找到。
3.2.4 編碼實(shí)現(xiàn)
首先在jsp頁面中加入一個(gè)file控件,然后創(chuàng)建一個(gè)javaBean類,再在此類中編碼實(shí)現(xiàn)上傳功能,相關(guān)代碼及解釋如下:
第一步:引入相關(guān)庫文件
以上三個(gè)語句表示將apache上傳文件組件的庫文件里的命名空間顯式導(dǎo)入到應(yīng)用程序文件中,以便在應(yīng)用程序文件中能直接使用實(shí)現(xiàn)上傳的相關(guān)函數(shù)。
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
以上兩語句是引入j2ee.jar庫文件里的命名空間。
第二步:編寫函數(shù)實(shí)現(xiàn)上傳文件功能
第三步:編寫函數(shù),創(chuàng)建用oracle中的sqlldr工具導(dǎo)入數(shù)據(jù)的控制文件和shell文件。
隨著社會(huì)信息化程度的不斷提高,資源共享成了社會(huì)進(jìn)步的巨大推動(dòng)力,怎樣使得資源共享更高效,成了計(jì)算機(jī)業(yè)研究的一個(gè)主要課題。本課題主要來自于社會(huì)實(shí)際客戶對(duì)共享大容量數(shù)據(jù)文件的直接導(dǎo)入到數(shù)據(jù)的需求內(nèi)容,很好地解決了實(shí)際用戶的需求,得到了客戶很好的認(rèn)可和評(píng)價(jià)。目前一般公司數(shù)據(jù)導(dǎo)入和維護(hù)需要通過計(jì)算機(jī)專業(yè)人員來完成,但該解決方案的應(yīng)用將會(huì)把人從需要具有專業(yè)知識(shí)并且非常煩瑣的大容量數(shù)據(jù)共享導(dǎo)入的工作中解放出來,使得操作人員只需要懂得簡單的Web操作就可以完成。
[1]鄧子云,謝英輝.精通J2EE網(wǎng)絡(luò)編程[M].北京:清華大學(xué)出版社,2007.5.
[2]李建剛,秦興橋,鄭雨貝.JSP網(wǎng)絡(luò)編程技術(shù)與實(shí)踐[M].北京:清華大學(xué)出版社,2008.6.
[3]張本豐.軟件過程信息化[N].中國計(jì)算機(jī)報(bào),2004-05-10
[4]SCOTTOAKS HENRYWONG.JAVA 線程(第3版)[M]. 南京:東南大學(xué)出版社,2006.3.
[5]哈諾德 .Java網(wǎng)絡(luò)編程[M].北京:中國電力出版社,2005.11.
[6](美)DAVID C.KREINES BRIAN LASKEY.ORACLE 數(shù)據(jù)庫管理[M].北京:中國電力出版社,2002.1.
[7]王海亮,王海鳳,張立民,鄭建茹.精通ORACLE10G備份與恢復(fù)[M].北京:中國水利水電出版社,2005.1.
[8]耿騫,袁名敦,肖明.信息系統(tǒng)分析與設(shè)計(jì)[M].北京:高等教育出版社,2004.5.
TP392
A
1671-5136(2010)02-0126-04
2010-04-25
謝英輝 (1977-),男,湖南漣源人,長沙民政職業(yè)技術(shù)學(xué)院軟件學(xué)院講師、碩士。研究方向:軟件項(xiàng)目管理、軟件工程;鄧子云 (1979-),男,湖南雙峰人,湖南現(xiàn)代物流職業(yè)技術(shù)學(xué)院副教授、高級(jí)工程師、碩士、中國系統(tǒng)分析員協(xié)會(huì)專業(yè)顧問。研究方向:軟件項(xiàng)目管理、軟件工程。