检查数据库中的现有条目还是重新创建表?

问题描述

| 我有一个PHP脚本,它每隔4小时就会从服务器中提取一个文件并将其中的值插入数据库中。 该文件很可能会在4小时内(或我最终选择的任何时间范围内)更改。这是物业及其所有者的列表。 最好检查文件并将其与每个数据库条目进行比较,并在需要时进行更新,或者创建一个临时表,然后使用SQL查询对它们进行比较?     

解决方法

没有。 我个人要做的是使用
ON DUPLICATE KEY UPDATE
运行
INSERT
命令(假设您的表设计正确,并且您正在使用文件中的至少一条信息作为
UNIQUE
键,您应该根据自己的评论)。 原因 创建临时表很麻烦。 比较也很麻烦。您需要选择一条记录,比较一条记录,如果不相等,则更新记录,依此类推-比较一条信息只是浪费大量的时间,而且还有一种更好的方法。 如果仅插入找到的所有内容,并且发生冲突,这将容易得多,这意味着记录存在并且很可能需要更新。 这样,您只需执行一次查询就可以处理所有事情,并且还可以保留数据完整性,因此您可以继续填充表或使用新记录进行更新。     ,我认为最好下载文件并更新现有表,也许使用REPLACE或REPLACE INTO。 \“ REPLACE的工作原理与INSERT完全相同,不同之处在于,如果表中的旧行与PRIMARY KEY或UNIQUE索引的新行具有相同的值,则在插入新行之前删除该旧行。” http: //dev.mysql.com/doc/refman/5.0/en/replace.html     ,大概您有一个必须匹配的列列表,以便您确定两件事是否匹配。 如果在这些列上创建UNIQUE索引,则可以使用
INSERT ... ON DUPLICATE KEY UPDATE
(手动)或
REPLACE INTO ...
(手动)