2012-04-04 7 views
1

私は2つのcsvファイルを持っていて、どちらも同じデータ構造を持っています。私はこの例に基づいて正確に一致するレコード数を比較し、取得したいCSVファイルとの区別方法

ID - Join_date - Last_Login 

:最初のファイル

20は第二のファイルに含まれていませんそのうち100件のレコードを持っています。

第2ファイルには120レコードあります。

PHPのスクリプトでこれら2つのファイルを比較し、2つの別々のCSVファイルを作成したいとします。

そして、最初のファイルに含まれていないすべての余分なレコードを2番目のファイルから削除します。
2番目のファイルに含まれていないすべてのレコードを最初のファイルから削除します。

おかげ

+0

@TheJolly:[「ありがとう」と同様のを削除してください編集](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts)を参照してください。ありがとう! – sarnold

答えて

0

本当に簡単にこれを行いますGNUユーティリティcommがあります。あなたはexecを使ってphp経由で、または直接それを行うことができます。 commにアクセスできない場合は、両方のファイルを(おそらくfile()経由で)配列に格納し、array_intersect()を使用するのが最も簡単です。

0

あなたあなたは非常に大規模なCSVを持っている場合、私は直接のMySQLにあなたがそれをインポートアドバイスでしょう.. CSVファイルの限られた数のためにこれを試してください

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)); 
関連する問題