我正试图找出最好的方法来做到这一点。我有一个在MySQL中有大约500条记录/行的数据库,我需要每天更新它。问题是我上传的文件将是Excel文件(我可能需要在上传前将其转换为CSV?)。此外,我只需要上传当前MySQL数据库中尚不存在的记录。 Unique字段名为“MemberID”。
实现这一目标的最佳方法是什么?如果我插入每一行(所以我可以先检查是否应该将记录/行插入数据库),就像使用循环一样,这将是一个缓慢的上传500条记录的过程吗?
我是VBA编程的PHP新手,我只知道如何一次插入一个记录。非常感谢您的建议。
答案 0 :(得分:0)
您有三种选择:
REPLACE
(推荐,因为您正在使用每天更新的数据库 - 您将永远不会知道,如果旧记录没有#&# 39; t从上次更新改变):
REPLACE INTO db_name (id,value) VALUES (1,1),(1,2),(1,3),(1,4)
它会影响所有行。
ON DUPLICATE KEY UPDATE
(这可能是您一直在搜索的内容,它会更新您想要的任何内容,或者只是按行排除')'):
INSERT INTO db_name (id,value) VALUES (1,1) ON DUPLICATE KEY UPDATE id=id
INSERT IGNORE INTO
(它只会更新那些新的行,跳过重复项,但如果您遇到密钥违规行为 MySQL 不引发错误):
INSERT IGNORE INTO db_name (id,value) VALUES (1,1);
此外,还有一些替代方案:SQL Merge。