我有两个csv文件,它们都有相同的数据结构。
ID - Join_date - Last_Login
我想根据这个例子比较并获得完全匹配的记录编号:
第一个文件有100条记录,其中20条不包括在第二个文件中。
第二个文件有120条记录。
我想要一个PHP脚本来比较这两个文件,并构建两个单独的CSV文件。
我想从第二个文件中删除第一个文件中没有的所有额外记录
并删除第一个文件中未包含在第二个文件中的所有记录。
感谢
有一个GNU实用程序comm
可以很容易地做到这一点。您可以通过php exec
,也可以直接执行。如果您没有访问comm
的权限,最简单的方法是将这两个文件存储在一个数组中(可能通过file()
)并使用array_intersect()
。
您可以在数量有限的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));