本發(fā)明涉及EXCEL數(shù)據(jù)導(dǎo)入方法。
背景技術(shù):
現(xiàn)在很多軟件產(chǎn)品在導(dǎo)入EXCEL時(shí),將表格里面的數(shù)據(jù)讀取后進(jìn)行處理,存在有幾點(diǎn)缺陷:
1、單線程處理導(dǎo)入的數(shù)據(jù),沒(méi)有考慮到導(dǎo)入的歷史數(shù)據(jù)的采集和正確的導(dǎo)入存放,在后續(xù)的數(shù)據(jù)分析時(shí),無(wú)法獲得有效的數(shù)據(jù);
2、另外也沒(méi)有考慮到模板文件的定制化要求;
3、沒(méi)有考慮到緩存技術(shù)和各個(gè)環(huán)節(jié)的解耦等。
以上設(shè)計(jì)的不足,導(dǎo)致系統(tǒng)當(dāng)導(dǎo)入大數(shù)據(jù)量的表格(通常視業(yè)務(wù)的復(fù)雜程度判斷),同時(shí)需要多sheet頁(yè),多sheet頁(yè)的數(shù)據(jù)又有前后關(guān)聯(lián)時(shí),系統(tǒng)處理的效率很低,占用的內(nèi)存也會(huì)增加幾倍甚至十幾倍。
技術(shù)實(shí)現(xiàn)要素:
為了克服現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種EXCEL數(shù)據(jù)導(dǎo)入方法,其能解決導(dǎo)入效率低的問(wèn)題。
為了實(shí)現(xiàn)上述目的,本發(fā)明所采用的技術(shù)方案如下:
一種EXCEL數(shù)據(jù)導(dǎo)入方法,其包括以下步驟:
根據(jù)預(yù)設(shè)的字段對(duì)EXCEL中的數(shù)據(jù)進(jìn)行讀取;
將讀取到的數(shù)據(jù)通過(guò)分布式服務(wù)框架導(dǎo)入至非關(guān)系型數(shù)據(jù)庫(kù)中;
將導(dǎo)入至非關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)按照預(yù)設(shè)模板保存至文檔型數(shù)據(jù)庫(kù)中。
優(yōu)選的,所述字段為數(shù)據(jù)庫(kù)配置字段或者xml定義字段。
優(yōu)選的,所述字段和預(yù)設(shè)模板保存在關(guān)系型數(shù)據(jù)庫(kù)中。
優(yōu)選的,所述關(guān)系型數(shù)據(jù)庫(kù)為MySQL。
優(yōu)選的,采用Apache POI框架對(duì)EXCEL中的數(shù)據(jù)進(jìn)行讀取。根據(jù)預(yù)設(shè)的數(shù)據(jù)量,按照預(yù)設(shè)的進(jìn)程數(shù)量對(duì)所述數(shù)據(jù)進(jìn)行讀取。
優(yōu)選的,所述分布式服務(wù)框架為Dubbo。
優(yōu)選的,所述非關(guān)系型數(shù)據(jù)庫(kù)為Redis。
優(yōu)選的,所述文檔型數(shù)據(jù)庫(kù)為MongoDB。
相比現(xiàn)有技術(shù),本發(fā)明的有益效果在于:
將預(yù)設(shè)模板、分布式服務(wù)框架、非關(guān)系型數(shù)據(jù)庫(kù)和文檔型數(shù)據(jù)庫(kù)進(jìn)行有機(jī)結(jié)合,從而有效提高了導(dǎo)入的效率。
附圖說(shuō)明
圖1為本發(fā)明較佳實(shí)施例的一種EXCEL數(shù)據(jù)導(dǎo)入方法的流程圖。
具體實(shí)施方式
下面,結(jié)合附圖以及具體實(shí)施方式,對(duì)本發(fā)明做進(jìn)一步描述:
如圖1所示,一種EXCEL數(shù)據(jù)導(dǎo)入方法,其包括以下步驟:
步驟S1、根據(jù)預(yù)設(shè)的字段對(duì)EXCEL中的數(shù)據(jù)進(jìn)行讀取。
其中,所述字段為數(shù)據(jù)庫(kù)配置字段或者xml定義字段。可采用Apache POI框架對(duì)EXCEL中的數(shù)據(jù)進(jìn)行讀取。Apache POI是Apache軟件基金會(huì)的開(kāi)放源碼函式庫(kù),POI提供API給Java程序?qū)icrosoft Office格式檔案讀和寫(xiě)的功能。
步驟S2、將讀取到的數(shù)據(jù)通過(guò)分布式服務(wù)框架導(dǎo)入至非關(guān)系型數(shù)據(jù)庫(kù)中。
其中,本實(shí)施例的分布式服務(wù)框架為Dubbo。Dubbo是阿里公司的一個(gè)分布式服務(wù)框架,致力于提供高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案,以及SOA服務(wù)治理方案。
非關(guān)系型數(shù)據(jù)庫(kù)為Redis。
步驟S3、將導(dǎo)入至非關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)按照預(yù)設(shè)模板保存至文檔型數(shù)據(jù)庫(kù)中。文檔型數(shù)據(jù)庫(kù)為MongoDB。也就是說(shuō),先將數(shù)據(jù)進(jìn)行緩存,然后再進(jìn)行解耦保存。
其中,根據(jù)預(yù)設(shè)的數(shù)據(jù)量,按照預(yù)設(shè)的進(jìn)程數(shù)量對(duì)所述數(shù)據(jù)進(jìn)行讀取。即當(dāng)系統(tǒng)的數(shù)據(jù)量比較大時(shí),可以采用規(guī)定進(jìn)程讀取指定記錄數(shù)。
本實(shí)施例的字段和預(yù)設(shè)模板保存在關(guān)系型數(shù)據(jù)庫(kù)中。所述關(guān)系型數(shù)據(jù)庫(kù)可采用MySQL。預(yù)設(shè)模板可以是運(yùn)維工程師在后臺(tái)制作,也可以是用戶通過(guò)網(wǎng)頁(yè)端在線制作。
Redis是一個(gè)開(kāi)源、支持網(wǎng)絡(luò)、基于內(nèi)存、鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫(kù),使用ANSI C編寫(xiě)。從2015年6月開(kāi)始,Redis的開(kāi)發(fā)由Redis Labs贊助,在2013年5月至2015年6月期間,其開(kāi)發(fā)由Pivotal贊助。在2013年5月之前,其開(kāi)發(fā)由VMware贊助。根據(jù)月度排行網(wǎng)站DB-Engines.com的數(shù)據(jù)顯示,Redis是最流行的鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫(kù)。
由于導(dǎo)入表格的字段類(lèi)型不確定性,業(yè)務(wù)系統(tǒng)最好采用MongoDB作為數(shù)據(jù)的倉(cāng)庫(kù)為最佳。將導(dǎo)入數(shù)據(jù)原封不動(dòng)的保存下來(lái),可以更好的展示下載錯(cuò)誤的信息給用戶。用戶可以修改下表格重新上傳系統(tǒng)。
MongoDB是一種文檔導(dǎo)向數(shù)據(jù)庫(kù)管理系統(tǒng),由C++撰寫(xiě)而成,以此來(lái)解決應(yīng)用程序開(kāi)發(fā)社區(qū)中的大量現(xiàn)實(shí)問(wèn)題。2007年10月,MongoDB由10gen團(tuán)隊(duì)所發(fā)展。2009年2月首度推出。
Redis是用來(lái)記錄程序過(guò)程中使用的緩存框架;Mongodb是將表格數(shù)據(jù)處理完成后,解決存放問(wèn)題的數(shù)據(jù)庫(kù)。
對(duì)本領(lǐng)域的技術(shù)人員來(lái)說(shuō),可根據(jù)以上描述的技術(shù)方案以及構(gòu)思,做出其它各種相應(yīng)的改變以及形變,而所有的這些改變以及形變都應(yīng)該屬于本發(fā)明權(quán)利要求的保護(hù)范圍之內(nèi)。