PHP 上传 CSV 以更新数据库记录但排除重复项

PHP Upload CSV to update database records but exclude duplicate

我正在尝试找到执行此操作的最佳方法。我有一个数据库,在 MySQL 中有大约 500 records/rows,我需要每天更新它。问题是我上传的文件将是 Excel 文件(我可能需要在上传前将其转换为 CSV?)。此外,我只需要上传当前 MySQL 数据库中尚不存在的记录。唯一字段名为 "MemberID".

实现此目标的最佳方法是什么?如果我像使用循环一样逐行插入每一行(这样我可以首先检查是否应将 record/row 插入数据库),上传 500 条记录的过程会很慢吗?

我是 VBA 编程的 PHP 新手,我只知道如何一次插入一条记录。非常感谢您的建议。

您有三个选择:

  1. REPLACE推荐,因为您使用的是每天更新的数据库——您永远不会知道,如果旧记录没有与上次更新相比的变化):

    REPLACE INTO db_name (id,value) VALUES (1,1),(1,2),(1,3),(1,4)
    

    它将影响所有行。

  2. ON DUPLICATE KEY UPDATE(这可能是您一直在寻找的内容,它会更新您想要的任何内容,或者干脆离开 'as is' 行):

    INSERT INTO db_name (id,value) VALUES (1,1) ON DUPLICATE KEY UPDATE id=id
    
  3. INSERT IGNORE INTO(它将只更新那些新的行,跳过重复的行,但是如果你遇到 key violations MySQL 将 NOT 引发错误):

    INSERT IGNORE INTO db_name (id,value) VALUES (1,1);
    

此外,一些备选方案:SQL Merge