从静态文件JSON Feed更新数据库

时间:2015-04-23 01:00:15

标签: php mysql json database

我有一个PHP脚本来提取静态的JSON文件并每10秒更新一次。它包含有关发生的一些事件的详细信息,它只是添加到JSON文件的顶部。然后我将它们插入MySQL数据库。

因为每次拉文件时我都要拉每个事件,所以我只会插入新事件。简单的方法是在数据库中搜索事件(主键相同),但我每天都在讨论~4000个事件,我不希望那么多查询看它是否存在。

我知道INSERT IGNORE,但看起来它只使用PRIMARY_KEY来执行此操作。

我可以做什么(最好是很容易)以防止两个键上的重复?

示例:

我有一个表events,其中包含以下列:

  • ID(无关,真的)
  • event_id(我需要从源存储)
  • action_id(许多action_ids属于一个event_id)
  • 时间戳
  • 无论...

我的数据就是我的JSON出现在第一个拉出来的那样:

event_id|action_id|...
   1    |   1
   1    |   2
   1    |   3
   2    |   1
   2    |   2
   2    |   3

然后下一步是:

event_id|action_id|...
   1    |   1
   1    |   2
   1    |   3
   1**  |   4**
   1**  |   5**
   2    |   1
   2    |   2
   2    |   3
   2**  |   4**

希望插入标有星号的行,并忽略其他行。请注意,primary_keyid完全在此表中,我只是将其用于无处不在。

我可以使用什么命令来" INSERT"我提取的每个事件,但只添加那些不会通过两列event_idaction_id重复的事件。

感谢。

1 个答案:

答案 0 :(得分:3)

为两列创建唯一索引。

CREATE 
    UNIQUE INDEX event_action
    ON tablename (event_id, action_id)