1

我有两个 csv 文件,并且都具有相同的数据结构。

ID - Join_date - Last_Login

我想根据此示例比较并获取完全匹配的记录编号:

第一个文件有 100 条记录,其中 20 条不包含在第二个文件中。

第二个文件有 120 条记录。

我想要一个 PHP 脚本来比较这两个文件并构建两个单独的 CSV 文件。

我想从第二个文件中删除第一个文件中不包含的所有额外记录。
并从第一个文件中删除不包含在第二个文件中的所有记录。

谢谢

4

2 回答 2

0

有一个 GNU 实用程序comm可以很容易地做到这一点。您可以exec通过 php 或直接执行此操作。如果您无权访问comm,最简单的做法是将两个文件存储在一个数组中(可能通过file())并使用array_intersect().

于 2012-04-04T13:26:23.717 回答
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));
于 2012-04-04T13:27:59.597 回答