2012-04-04 33 views
1

我有兩個csv文件,並且都具有相同的數據結構。如何區分CSV文件中的數據

ID - Join_date - Last_Login 

我想比較,並獲得基於這個例子精確匹配的記錄數:

第一文件有100條記錄,其中不包括在第二檔20。

第二個文件有120條記錄。

我想在PHP腳本來比較這兩個文件,並建立兩個獨立的CSV文件。

我想從第二個文件中刪除第一個文件中沒有包含的所有額外記錄。
並刪除第一個文件中未包含在第二個文件中的所有記錄。

感謝

+0

@TheJolly:請刪除「謝謝」和類似的當編輯功能](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts)。謝謝! – sarnold 2012-04-04 22:57:09

回答

0

有一個GNU工具comm,將做到這一點真的很容易。你可以通過php或者直接做exec。如果您無權訪問comm,最簡單的做法是將這兩個文件存儲在一個數組中(可能通過file())並使用array_intersect()

0

你一個嘗試一下本作CSV文件的數量有限..如果你有一個非常大的CSV我會建議你將其導入直接到MySQL

function csvToArray($csvFile, $full = false) { 
    $handle = fopen ($csvFile, "r"); 
    $array = array(); 
    while (($data = fgetcsv ($handle)) !== FALSE) { 
     $array [] = ($full === true) ? $data : $data[0]; // Full array or only ID 
    } 

    return $array; 
} 


$file1 = "file1.csv" ; 
$file2 = "file2.csv" ; 

$fileData1 = csvToArray($file1); 
$fileData2 = csvToArray($file2); 


var_dump(array_diff($fileData1,$fileData2)); 
var_dump(array_intersect($fileData1,$fileData2)); 
相關問題