【问题标题】:Compare 2 csv file with 1 column each in php在php中比较2个csv文件和1列
【发布时间】:2014-08-07 18:55:04
【问题描述】:

我必须比较 2 个 csv 文件,每个文件有 1 列:

file1.csv:

第 1 列

9788800000000
9788800000001
9788800000002
9788800000003
...

file2.csv:

列1

9788800000000
9788800000001
9788800000002
9788800000006
9788800000007
9788800000008
...

当在第二个 csv 文件 (file2.csv) 中找不到某些 EAN 代码时,我必须采取一些措施。例如代码 9788800000003 它只存在于 file1.csv 中。

现在,当第一个文件中的 EAN 代码在第二个文件中找不到时,我必须更新 DB 中的表并将其设置为“0”(在这种情况下,必须更改 ean 9788800000003 0个):

mysql_query("UPDATE $update_table SET quantity='0' WHERE ean13='$ean13'")

如何比较列的差异?

【问题讨论】:

    标签: php mysql csv


    【解决方案1】:

    类似这样的:

    $file1 = file('file1.csv');
    $file2 = file('file2.csv');
    
    $diff  = array_diff($file1, $file2);
    $list  = implode(',', $diff);
    
    $query = "UPDATE $update_table SET quantity='0' WHERE ean13 IN ($list)";
    
    1. 将文件读入行数组
    2. 获取差异数组
    3. 生成 EAN 差异列表
    4. 在 WHERE 子句中使用 IN

    【讨论】:

    • 谢谢。它运作良好。只有一件事:有没有“计算”订单? 766623917236 766623917237 766623917235并在第二个文件:如果我在第一个文件中插入766623917235 766623451178 766623917230 766623917236 766623917237它提供了:766623917237,766623917235。但是这两个代码都存在于两个文件中。谢谢。
    • 我不知道你到底想要什么,但另一个选择是array_intersect
    • 在实践中,我必须知道第二个文件中不存在哪个 EAN 代码。我在两个文件中每行插入一个代码,就像我所做的帖子一样。第一个是商店中可用的 ean 代码,我必须与我们供应商提供的第二个文件进行比较。现在,如果供应商删除了一个代码(我在我的商店里有它,进入 file1.csv),我必须知道它并将数量替换为 0,因为它变得不可用。
    • 我认为我们已经非常接近解决方案了.. 有什么线索吗?
    • 我添加了一个$diff2 = array_diff($file2, $file1);,它有助于以相反的方式找到差异。现在我必须使用 $update_table 执行 $query 以获取更新数量,前提是在 DB 中找到 $diff 和 $diff2 的 ean13 代码输出。如何做到这一点?谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    相关资源
    最近更新 更多