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


PHP Upload CSV to update database records but exclude duplicate

我正在努力找出最好的方法来做到这一点。我有一个数据库,在MySQL中有大约500条记录/行,我需要每天更新。问题是我上传的文件将是Excel文件(我可能需要在上传之前将其转换为CSV ?)此外,我需要只上传记录,还不存在于当前MySQL数据库。唯一字段命名为"MemberID"。

实现这一目标的最佳方法是什么?如果我插入每一行(所以我可以先检查记录/行是否应该插入到数据库)一个接一个像使用循环,这将是一个缓慢的过程上传500条记录?

我是新的PHP从VBA编程,我只知道如何插入记录在一个时间。非常感谢您的建议。

您有三个选择:

  1. REPLACE (推荐,因为您使用的是每天更新的数据库-您永远不会知道,如果旧记录没有从上次更新更改):

    REPLACE INTO db_name (id,value) VALUES (1,1),(1,2),(1,3),(1,4)
    
  2. ON DUPLICATE KEY UPDATE(这可能是你一直在寻找,它会更新任何你想要的或简单地离开行'原样'):

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

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

还有一些选择:SQL Merge