最近合併乙個增量和全量檔案的時候用到了開關,很好用的一種處理邏輯。
應用場景:有乙個增量檔案,乙個全量檔案,按照規則將增量檔案和全量檔案進行對比後,寫入新的全量檔案。
在增量檔案中有三種資料標識,0表示此增量資料不用新增到新的全量檔案中,要在全量檔案中刪除此標識對新增到新的全量檔案中。1表示2表示此條增量資料要插入新的全量檔案中,2表示此條增量資料對應的手機號需要更新到新的全量檔案,原全量檔案的有相同手機號的不用新增新的全量檔案中。
增量資料如下:
1,13188739756,00020220,00030220,2018-09-18 00:00:00 直接加入到新的全量檔案中
2,13188739754,00020220,00030220,2018-09-18 00:00:00 刪除原全量檔案同樣手機號的資料,將此條資料擷取2,後的資料新增到新的全量檔案中
0,13188739755,00020220,00030220,2018-09-18 00:00:00 此條資料不新增到到新的全量資料檔案
全量資料:
13288739764,00030220,00020220,2017-09-18 00:00:00
13188739754,00030220,00020220,2018-09-18 00:00:00
13188739755,00020220,00030220,2018-09-18 00:00:00
最終要生成的新的全量檔案:
13288739764,00030220,00020220,2017-09-18 00:00:00
13188739754,00020220,00030220,2018-09-18 00:00:00
13188739756,00020220,00030220,2018-09-18 00:00:00
真實的全量資料有將近40萬,增量資料有5000多條,0,1,2標識的資料增量資料數量不等,可能沒有0,或沒有2,或沒有1,或者都沒有,或者都有,或者只有1條,或者有很多條。
全量和增量檔案第一行是此檔案含有的記錄數。
public
static
void
datareadwrite
(file itffullfile ,file increfile)
pw.println
(readline);}
}else
else
if(increstr.
startswith
("1,"))
else
if(increstr.
startswith
("2,"))
}}while
((itffullstr = fullbr.
readline()
)!= null)
else}}
else
else
}for
(string increstr2 : increlist2)
else
if(flag0.
equals
("add"
)&& itffullstr.
indexof
(increstr2.
substring(2
,13))
==-1)
}}}else
if(increlist0.
size()
==0)else
if(flag0.
equals
("add"
)&& itffullstr.
indexof
(increstr2.
substring(2
,13))
==-1)
}}else}if
(flag)}}
else
if(flag0.
equals
("add"))
if(flag0.
equals
("nothandle"))
}}catch
(exception e)}}
if(increlist1.
size()
!=0)}
pw.println
(readline);}
catch
(ioexception e)
finally
if(fullbr != null)
if(itffullbr != null)
}catch
(exception e)
}}
用with處理檔案
用with處理檔案 由於處理檔案時try except finally模式相當常用,所以python提供了乙個語句來抽象出相關的一些細節。對檔案使用with語句時,可以大大減少需要編寫的 量,因為有了with語句就不再需要包含乙個finally組來處理檔案的關閉,即妥善關閉乙個可能開啟的資料檔案。例...
用C,shell實現倆檔案合併
乙個檔案a中內容以行儲存,如果命名為a1,a2,a3.行,另乙個檔案b中為b1,b2,b3,b4,b5.a和b檔案內容不一定等長,使用c shell分別實現內容合併,形式為a1b1a2b2a3b3a4b4b5.解析程式環境為linux環境下gcc編譯。void file if fp2 fopen b...
用rdiff拆分合併檔案
我們的乙個方案是基於檔案做多端資料同步,見另外一篇部落格 基於檔案的資料同步方案 其中的核心是如何正確 高效地同步檔案,一開始我們使用了國產的libsync庫 libsync 基本的流程是 有檔案a和b,現在想把檔案a 變成 檔案b,先對檔案a做chunk 然後用chunk和檔案b對比,得到delt...