首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使MySQL数据库与轮询数据保持同步

问使MySQL数据库与轮询数据保持同步
EN

Stack Overflow用户
提问于 2014-01-11 08:16:13
回答 2查看 264关注 0票数 0

我有一个有趣的情况,我经常从服务器轮询数据。我无法控制它提供的内容,所以我只能处理它提供给我的内容。

我正在记录它提供的一些信息,并将其存储在一个MySQL数据库中。这并不是真正的问题,然而,我的问题是如何有效地保持数据与数据库的同步。

例如,在某一时刻,我可能有3个I 1001、1002、1003。我可以很好地将它们插入到数据库中,但是,如果我现在有1001和1003会怎么样呢?更新数据库以反映这一点的最有效方法是什么?基本上,我只知道我现在拥有什么,我没有办法知道发生了什么变化,除非我自己在PHP中进行计算。

我想我可以选择,找出差异,然后对丢失/添加的ID发出删除/插入命令。或者可能是DELETE NOT IN (),然后是INSERT。但是由于这个脚本一直在运行,所以我担心这不是很有效。

我的另一个想法是简单地为每个“玩家”创建一行,并使用CSV分隔的I列表。每次迭代我都可以更新该播放器的行,而不是SELECT/DELETE/INSERT。

有没有人遇到过类似的问题,并找到了很好的解决方案或有一些洞察力?我将不胜感激!我使用的是PHP。

EN

回答 2

Stack Overflow用户

发布于 2014-01-11 08:20:03

也许你可以试试REPLACE INTO,如果我能得到你想要的。

http://www.mysqltutorial.org/mysql-replace.aspx

如果要插入的记录不存在,MySQL REPLACE将插入一条新记录。

如果要插入的记录已经存在,MySQL REPLACE将首先删除旧记录,然后再插入新记录。

这将阻止您选择、删除和安装。这个可以处理这个问题。

票数 0
EN

Stack Overflow用户

发布于 2014-01-11 10:10:47

如果您能够截断整个表并重新加载它,那么您可以这样做。

或

创建一个加载了新数据的临时表

将原始表与临时表连接,并删除临时表中不存在的行

或

使用编程语言标识不再需要存在于原始表中的in并将其删除

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21056833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档