2012-04-04 12 views
1

Ich habe zwei csv-Dateien, und beide haben die gleiche Datenstruktur.So unterscheiden Sie Daten von CSV-Dateien

ID - Join_date - Last_Login 

Ich mag vergleichen und die genau passenden Datensätze Zahlen auf diesem Beispiel basieren zu erhalten:

die ersten Dateien 100 Datensätze, davon 20 nicht in der zweiten Datei enthält.

die zweite Datei hat 120 Datensätze.

Ich möchte ein Skript in PHP, um diese beiden Dateien zu vergleichen und zwei separate CSV-Dateien zu erstellen.

Und ich möchte alle zusätzlichen Datensätze aus der zweiten Datei entfernen, die nicht in der ersten Datei enthalten sind.
Und entfernen Sie alle Datensätze aus der ersten Datei, die nicht in der zweiten Datei enthalten sind.

Dank

+0

@TheJolly: [Bitte entfernen Sie „Danke“ und ähnliche, wenn Bearbeiten] (http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts). Vielen Dank! – sarnold

Antwort

0

Es ist ein GNU-Dienstprogramm comm, dass dies wirklich einfach zu tun. Sie könnten exec das über PHP oder einfach direkt tun. Wenn Sie keinen Zugriff auf comm haben, ist es am einfachsten, beide Dateien in einem Array (wahrscheinlich über file()) zu speichern und array_intersect() zu verwenden.

0

Sie ein versuchen, diese für eine begrenzte Anzahl von CSV-Datei .. wenn Sie eine sehr große CSV haben würde ich empfehlen Sie es direkt in MySQL importieren

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)); 
Verwandte Themen