本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)分割方法。
背景技術(shù):
在交易系統(tǒng)中,每一筆的交易都會(huì)形成一交易記錄,每個(gè)交易記錄中均包含多個(gè)交易屬性的數(shù)據(jù),交易記錄最終會(huì)形成一存儲(chǔ)文件,為了方便管理者對(duì)存儲(chǔ)文件中的每一交易記錄進(jìn)行查看保存,需要將存儲(chǔ)文件中的交易記錄等相關(guān)數(shù)據(jù)保存于一存儲(chǔ)服務(wù)器中,現(xiàn)有的將存儲(chǔ)文件保存于存儲(chǔ)服務(wù)器中的做法通常是加載一完整的存儲(chǔ)文件,進(jìn)而對(duì)存儲(chǔ)文件中交易記錄逐個(gè)進(jìn)行寫入保存,這樣操作會(huì)使存儲(chǔ)服務(wù)器占用較大的內(nèi)存,嚴(yán)重影響存儲(chǔ)服務(wù)器的性能,更有甚者由于存儲(chǔ)文件過(guò)大,會(huì)導(dǎo)致存儲(chǔ)服務(wù)器出現(xiàn)死機(jī)等問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)中存儲(chǔ)服務(wù)器保存存儲(chǔ)文件中的數(shù)據(jù)存在的上述問(wèn)題,現(xiàn)提供一種旨在實(shí)現(xiàn)較少占用存儲(chǔ)服務(wù)器的內(nèi)存,將帶待存儲(chǔ)文件中的數(shù)據(jù)進(jìn)行存儲(chǔ)的數(shù)據(jù)分割方法。
具體技術(shù)方案如下:
一種數(shù)據(jù)分割方法,應(yīng)用于存儲(chǔ)服務(wù)器中,所述存儲(chǔ)服務(wù)器用以對(duì)待存儲(chǔ)文件中的數(shù)據(jù)進(jìn)行存儲(chǔ),其特征在于,所述數(shù)據(jù)分割方法具體包括以下步驟:
步驟s1、判斷所述待存儲(chǔ)文件是否滿足一預(yù)設(shè)分割條件;
若是,執(zhí)行步驟s2;
若否,直接對(duì)所述待存儲(chǔ)文件中的數(shù)據(jù)進(jìn)行保存并退出;
步驟s2、按照一預(yù)設(shè)的分割規(guī)則對(duì)所述待存儲(chǔ)文件進(jìn)行分割以形成多個(gè)處理子文件,并對(duì)應(yīng)生成每個(gè)所述處理子文件的分割狀態(tài)信息;
步驟s3、根據(jù)所有的所述處理子文件對(duì)應(yīng)的所述分割狀態(tài)信息,判斷所有的所述處理子文件是否均分割失?。?/p>
若是,返回所述步驟s1;
若否,執(zhí)行步驟s4;
步驟s4,在分割成功的所有所述處理子文件中,以n個(gè)所述處理子文件為一處理周期,依次將所述處理文件中的數(shù)據(jù)進(jìn)行保存。
優(yōu)選的,所述預(yù)設(shè)分割規(guī)則為按照一預(yù)設(shè)大小對(duì)所述存儲(chǔ)文件進(jìn)行分割以形成大小相等的所述處理子文件。
優(yōu)選的,所述預(yù)設(shè)分割規(guī)則為按照一預(yù)設(shè)行數(shù)對(duì)所述存儲(chǔ)文件進(jìn)行分割以形成行數(shù)相等的所述處理子文件。
優(yōu)選的,所述步驟s2中,每個(gè)所述處理子文件的所述分割狀態(tài)信息包括,文件名、分割成功或者分割失敗對(duì)應(yīng)的標(biāo)識(shí)、數(shù)據(jù)起止行數(shù)。
優(yōu)選的,所述存儲(chǔ)服務(wù)器提供一數(shù)據(jù)庫(kù),所述數(shù)據(jù)庫(kù)用以保存每個(gè)所述處理子文件的所述分割狀態(tài)信息。
優(yōu)選的,所述步驟s4中執(zhí)行完成后還包括:
步驟s5、判斷所有分割成功的所述處理子文件是是否全部處理完畢:
如是,退出;
如否,執(zhí)行步驟s6;
s6,對(duì)剩余的所述處理子文件中的數(shù)據(jù)依次進(jìn)行保存,并返回步驟s5。
優(yōu)選的,提供一監(jiān)聽程序,所述監(jiān)聽程序用以判斷每一個(gè)所述處理周期執(zhí)行的時(shí)間是否超過(guò)一第三預(yù)設(shè)閾值;
并在超過(guò)所述第三預(yù)設(shè)閾值時(shí)退出結(jié)束對(duì)當(dāng)前的所述處理子文件的數(shù)據(jù)的保存。
優(yōu)選的,所述n為3或4或5。
優(yōu)選的,所述步驟s4中,對(duì)所述處理子文件中的數(shù)據(jù)進(jìn)行保存的方法包括:
步驟a,對(duì)所述處理子文件進(jìn)行解析,以獲取解析出的數(shù)據(jù);
步驟b,將當(dāng)前的所述處理子文件中解析出的數(shù)據(jù),保存至所述數(shù)據(jù)庫(kù)中;
步驟c,在當(dāng)前的所述處理子文件中的所有數(shù)據(jù)保存完成后,形成一錄入狀態(tài)標(biāo)識(shí)并保存于所述數(shù)據(jù)庫(kù)中,所述錄入狀態(tài)表示當(dāng)前的所述處理子文件中的所有數(shù)據(jù)保存完整。
在一種較優(yōu)的實(shí)施方式中,所述待存儲(chǔ)文件為excel格式的文件。
上述技術(shù)方案具有如下優(yōu)點(diǎn)或有益效果:可對(duì)待存儲(chǔ)文件進(jìn)行分割進(jìn)行形成處理子文件,存儲(chǔ)服務(wù)器可將分割成功的所有處理子文件中,以n個(gè)所述處理子文件為一處理周期,依次將處理文件中的數(shù)據(jù)進(jìn)行保存,克服了現(xiàn)有技術(shù)中將整個(gè)存儲(chǔ)文件中的數(shù)據(jù)進(jìn)行保存帶來(lái)的存儲(chǔ)服務(wù)器內(nèi)存占用較大,影響存儲(chǔ)服務(wù)器性能,更有甚者由于存儲(chǔ)文件過(guò)大,會(huì)導(dǎo)致存儲(chǔ)服務(wù)器出現(xiàn)死機(jī)等缺陷。
附圖說(shuō)明
參考所附附圖,以更加充分的描述本發(fā)明的實(shí)施例。然而,所附附圖僅用于說(shuō)明和闡述,并不構(gòu)成對(duì)本發(fā)明范圍的限制。
圖1為本發(fā)明一種數(shù)據(jù)分割方法的實(shí)施例的流程圖;
圖2為本發(fā)明一種數(shù)據(jù)分割方法的實(shí)施例中,關(guān)于判斷處理子文件是否處理完畢的方法的流程圖;
圖3為本發(fā)明一種數(shù)據(jù)分割方法的實(shí)施例中,關(guān)于對(duì)處理子文件中的數(shù)據(jù)進(jìn)行保存的方法的流程圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
需要說(shuō)明的是,在不沖突的情況下,本發(fā)明中的實(shí)施例及實(shí)施例中的特征可以相互組合。
下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明,但不作為本發(fā)明的限定。
本發(fā)明的技術(shù)方案中包括一種數(shù)據(jù)分割方法。
一種數(shù)據(jù)分割方法的實(shí)施例,應(yīng)用于存儲(chǔ)服務(wù)器中,所述存儲(chǔ)服務(wù)器用以對(duì)待存儲(chǔ)文件中的數(shù)據(jù)進(jìn)行存儲(chǔ),其中,如圖1所示,數(shù)據(jù)分割方法具體包括以下步驟:
步驟s1、判斷待存儲(chǔ)文件是否滿足一預(yù)設(shè)分割條件;
若是,執(zhí)行步驟s2;
若否,直接對(duì)所述待存儲(chǔ)文件中的數(shù)據(jù)進(jìn)行保存并退出;
步驟s2、按照一預(yù)設(shè)的分割規(guī)則對(duì)待處理文件進(jìn)行分割以形成多個(gè)處理子文件,并對(duì)應(yīng)生成每個(gè)處理子文件的分割狀態(tài)信息;
步驟s3、根據(jù)所有的處理子文件對(duì)應(yīng)的分割狀態(tài)信息,判斷所有的處理子文件是否均分割失?。?/p>
若是,返回步驟s1;
若否,執(zhí)行步驟s4;
步驟s4,在分割成功的所有處理子文件中,以n個(gè)處理子文件為一處理周期,依次將處理文件中的數(shù)據(jù)進(jìn)行保存。
針對(duì)現(xiàn)有技術(shù)中,對(duì)存儲(chǔ)文件中的交易記錄的數(shù)據(jù)進(jìn)行存儲(chǔ)時(shí),不管存儲(chǔ)文件的大小,對(duì)整個(gè)存儲(chǔ)文件進(jìn)行逐個(gè)處理保存,進(jìn)而帶來(lái)存儲(chǔ)服務(wù)器內(nèi)存占用過(guò)大,嚴(yán)重影響存儲(chǔ)服務(wù)器性能的缺陷。
本發(fā)明中通過(guò)用戶將上傳并保存在存儲(chǔ)服務(wù)器中目錄下的待存儲(chǔ)文件進(jìn)行判斷,其可通過(guò)存儲(chǔ)服務(wù)器啟用一文件處理主線程,通過(guò)文件處理主線程判斷待存儲(chǔ)文件是否滿足預(yù)設(shè)分割條件,若不滿足分割條件,則表示當(dāng)前的待存儲(chǔ)文件并不大,可直接對(duì)待存儲(chǔ)文件中的數(shù)據(jù)進(jìn)行保存操作;在滿足預(yù)設(shè)分割條件后,開啟文件分割線程按照預(yù)設(shè)分割規(guī)則對(duì)待存儲(chǔ)文件進(jìn)行分割以形成多個(gè)處理子文件,在分割的處理過(guò)程中,對(duì)分割的每個(gè)處理子文件對(duì)應(yīng)形成一分割狀態(tài)信息,其中不管處理子文件是否分割成功,每個(gè)處理子文件的分割狀態(tài)信息都會(huì)保存對(duì)應(yīng)的分割狀態(tài)信息,當(dāng)所有的處理子文件都分割失敗則重新啟動(dòng)文件處理主線程重新執(zhí)行上述處理,對(duì)于分割成功的處理子文件開啟子文件處理線程,將所有的分割成功的處理子文件并行輸出,啟動(dòng)m個(gè)文件處理入庫(kù)線程,對(duì)應(yīng)處理n個(gè)處理子文件,其中m=n,每個(gè)文件處理入庫(kù)線程以n個(gè)處理子文件為一處理周期,依次將處理文件中的數(shù)據(jù)進(jìn)行保存。
在一種較優(yōu)的實(shí)施方式中,預(yù)設(shè)分割規(guī)則為按照一預(yù)設(shè)大小對(duì)存儲(chǔ)文件進(jìn)行分割以形成大小相等的處理子文件。
上述技術(shù)方案中,當(dāng)存儲(chǔ)文件中的列數(shù)較少,即表示每一行的數(shù)據(jù)的屬性較少,此時(shí)可通過(guò)一預(yù)設(shè)大小對(duì)存儲(chǔ)文件進(jìn)行分割,需要說(shuō)明的是預(yù)設(shè)大小可根據(jù)使用者的自定義設(shè)置,使用者具體可根據(jù)待存儲(chǔ)文件進(jìn)行設(shè)置。
在一種較優(yōu)的實(shí)施方式中,預(yù)設(shè)分割規(guī)則為按照一預(yù)設(shè)行數(shù)對(duì)存儲(chǔ)文件進(jìn)行分割以形成行數(shù)相等的處理子文件。
上述技術(shù)方案中,當(dāng)存儲(chǔ)文件中的列數(shù)較多,則表示每一行數(shù)據(jù)的屬性較多,每一行的數(shù)據(jù)較大,此時(shí)可通過(guò)一預(yù)設(shè)行數(shù)對(duì)存儲(chǔ)文件進(jìn)行分割,預(yù)設(shè)行數(shù)可根據(jù)使用者的自行定義。
在一種較優(yōu)的實(shí)施方式中,步驟s2中,每個(gè)處理子文件的分割狀態(tài)信息包括,文件名、分割成功或者分割失敗對(duì)應(yīng)的標(biāo)識(shí)、數(shù)據(jù)起止行數(shù)。
上述技術(shù)方案中,分割狀態(tài)信息還包括每個(gè)處理子文件對(duì)應(yīng)的存儲(chǔ)路徑,其中起止行數(shù),標(biāo)識(shí)分割的處理子文件是從哪一行開始,到多少行結(jié)束,還可包括處理子文件的大小,為了避免文件分割出現(xiàn)數(shù)據(jù)重復(fù)和丟失對(duì)處理子文件中的數(shù)據(jù)可采用對(duì)應(yīng)的行號(hào)作為唯一身份標(biāo)識(shí)。
在一種較優(yōu)的實(shí)施方式中,存儲(chǔ)服務(wù)器提供一數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)用以保存每個(gè)處理子文件的分割狀態(tài)信息。
上述技術(shù)方案中,對(duì)待存儲(chǔ)文件進(jìn)行分割時(shí),不管處理子文件是否分割成功,每個(gè)處理子文件的分割狀態(tài)信息都會(huì)保存于數(shù)據(jù)庫(kù)中。
在一種較優(yōu)的實(shí)施方式中,如圖2所示,步驟s4中執(zhí)行完成后還包括:
步驟s5、判斷所有分割成功的處理子文件是是否全部處理完畢:
如是,退出;
如否,執(zhí)行步驟s6;
s6,對(duì)剩余的處理子文件中的數(shù)據(jù)依次進(jìn)行保存,并返回步驟s5。
上述技術(shù)方案中,通過(guò)對(duì)分割完成的處理子文件進(jìn)行實(shí)時(shí)判斷其是否處理完畢,可以有效避免遺漏對(duì)處理子文件的處理。
在一種較優(yōu)的實(shí)施方式中,提供一監(jiān)聽程序,監(jiān)聽程序用以判斷每一個(gè)處理周期執(zhí)行的時(shí)間是否超過(guò)一第三預(yù)設(shè)閾值;
并在超過(guò)第三預(yù)設(shè)閾值時(shí)退出結(jié)束對(duì)當(dāng)前的處理子文件的數(shù)據(jù)的保存。
上述技術(shù)方案中,第三預(yù)設(shè)閾值可根據(jù)實(shí)際的運(yùn)行狀態(tài)進(jìn)行配置。
在一種較優(yōu)的實(shí)施方式中,n為3或4或5。
上述技術(shù)方案中,文件入庫(kù)線程可開啟3到5個(gè),因此在每一處理周期內(nèi)可對(duì)應(yīng)處理3-5個(gè)處理子文件。
在一種較優(yōu)的實(shí)施方式中,如圖3所示,步驟s4中,對(duì)處理子文件中的數(shù)據(jù)進(jìn)行保存的方法包括:
步驟a,對(duì)處理子文件進(jìn)行解析,以獲取解析出的數(shù)據(jù);
步驟b,將當(dāng)前的處理子文件中解析出的數(shù)據(jù),保存至數(shù)據(jù)庫(kù)中;
步驟c,在當(dāng)前的處理子文件中的所有數(shù)據(jù)保存完成后,形成一錄入狀態(tài)標(biāo)識(shí)并保存于數(shù)據(jù)庫(kù)中,錄入狀態(tài)用以表示當(dāng)前的處理子文件中的所有數(shù)據(jù)保存完整。
在一種較優(yōu)的實(shí)施方式中,所述待存儲(chǔ)文件為excel格式的文件。
上述技術(shù)方案中,可采用poi用戶模式解析處理子文件,以獲取處理子文件中的數(shù)據(jù),在待存儲(chǔ)文件為excel格式的文件的實(shí)施例下,將解析的數(shù)據(jù)如每一行中的數(shù)據(jù)寫入數(shù)據(jù)庫(kù)中,并在當(dāng)前的處理子文件中的所有數(shù)據(jù)保存完成后形成一錄入狀態(tài)標(biāo)識(shí),以表示當(dāng)前的處理子文件中的數(shù)據(jù)保存完成,進(jìn)一步的可以對(duì)下一處理子文件進(jìn)行解析。
以上所述僅為本發(fā)明較佳的實(shí)施例,并非因此限制本發(fā)明的實(shí)施方式及保護(hù)范圍,對(duì)于本領(lǐng)域技術(shù)人員而言,應(yīng)當(dāng)能夠意識(shí)到凡運(yùn)用本發(fā)明說(shuō)明書及圖示內(nèi)容所作出的等同替換和顯而易見的變化所得到的方案,均應(yīng)當(dāng)包含在本發(fā)明的保護(hù)范圍內(nèi)。