2013-01-11 33 views
0

有兩個製表符分隔的文件(file1,file2),它們具有相同的記錄數量和結構,但列的值不同。更改分隔文件中的數據捕獲

我們每天都會得到另一個文件(newfile),其記錄的編號和結構相同,但列值有一些變化。

將此文件(newfile)與兩個文件(file1,file2)進行比較,並使用已更改的記錄更新它們中的記錄,並保持不變的記錄不變。

應用更改之前:

file1 
11 aaaa 
22 eeee 
33 ffff 

file2 
11 aaaa 
22 eeee 
33 ffff 

可能是什麼容易的,最有效的解決方案:

file1 

11 aaaa 
22 bbbb 
33 cccc 

file2 
11 bbbb 
22 aaaa 
33 cccc 

newfile 
11 aaaa 
22 eeee 
33 ffff 

套用變更後? Unix shell腳本?這些文件包含數百萬條記錄,在這種情況下,shell腳本可以成爲高效的解決方案嗎?

+0

示例文件可能非常有用... – twalberg

+0

正在更新數據庫嗎?如果是這樣的(Oracle等)?數據庫應該能夠比shell腳本更快地更新記錄。否則,這些文件如何被使用?爲什麼你不能使用newfile?請用您的示例數據更新您的問題。每行前面使用4個空格,前後使用空行,以便格式正確。 ?祝你好運。 – shellter

+0

@shellter:首先創建分隔文件,然後加載到Oracle數據庫。 –

回答

0

每天我們會得到另一個文件(newfile),其記錄的編號和結構相同,但列值有一些變化。

這聽起來像是一個完美的案例git。用git你可以提交當前文件。

然後,當您獲得文件的新「版本」時,您可以簡單地用新版本替換舊版本,然後再次提交。最好的部分是每次你做一次提交git會記錄文件之間的變化,讓你訪問整個文件的歷史。

+0

你可以看看上面發佈的例子。我無法將其格式化爲包含制動器,但所有文件都有3條記錄,每條記錄2列。我可以使用shell腳本來做到這一點,但想知道任何其他方式,因爲shell腳本可能需要太多的時間來處理數百萬行。如果git可以有效地做到這一點,我會探索這個選項。另外,我認爲git會很有用,因爲它也保持歷史記錄。我們目前不需要歷史記錄,但也許需要其他項目。 –