2012-04-04 6 views
1

두 개의 CSV 파일이 있고 둘 다 동일한 데이터 구조를 가지고 있습니다.CSV 파일과 데이터를 구분하는 방법

첫 번째 파일 (20)가 제 2 파일에 포함되지 않는의 (100 개) 기록을 가지고

ID - Join_date - Last_Login 

나는 비교 예에 따라 정확히 일치하는 기록 번호를 얻으려면.

두 번째 파일에는 120 개의 레코드가 있습니다.

PHP의 스크립트에서이 두 파일을 비교하고 두 개의 개별 CSV 파일을 만들길 원합니다.

그리고 두 번째 파일에서 첫 번째 파일에 포함되지 않은 모든 추가 레코드를 제거하고 싶습니다.
두 번째 파일에 포함되지 않은 모든 레코드를 첫 번째 파일에서 제거하십시오.

감사

+0

@TheJolly : [ "감사"와 유사한를 제거하십시오 편집] (http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts). 감사! – sarnold

답변

0

정말 쉽게 할 것입니다 GNU 유틸리티 comm 있습니다. 당신은 PHP를 통해 exec 수 또는 그냥 직접 할. 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)); 
관련 문제