将MySQL与CSV进行比较,找出不同之处



我有一个CSV文件,其中有一列名为EAN,还有一个MySQL表,其中有列名为EAN

这就是我想做的比较两列:

CSV ||| MySQL ||| STATUS
123     123       OK
321     321       OK
444               MISSING IN MySQL
111       MISSING IN CSV

有什么想法可以用PHP实现吗?

一种方法:

(假设您已经知道如何打开文件并执行查询。(

首先从CSV中读取行,并假设SQL中缺少数据。

while (($row = fgetcsv($file)) !== FALSE) {
$num = $row[0];  // or whatever CSV column the value you want is in
$result[$num] = ['csv' => $num, 'sql' => '', 'status' => 'MISSING IN SQL'];
}

然后从查询中提取行,并相应地填充从CSV创建的数组。

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$num = $row['EAN']; // or whatever your column is named
if (isset($result[$num])) {
// This has a value from the CSV, so update the array
$result[$num]['sql'] = $num;
$result[$num]['status'] = 'OK';
} else {
// This doesn't have a value from the CSV, so insert a new row
$result[$num] = ['csv' => '', 'sql' => $num, 'status' => 'MISSING IN CSV'];
}
}

您可以更改此操作的顺序,然后先处理查询结果。只要对第二个数据源执行更新/插入逻辑,任何一个顺序都可以。

如果希望合并后的值按顺序排列,则可以使用ksort($result);,然后根据需要输出$result

相关内容

  • 没有找到相关文章

最新更新