gpt4 book ai didi

php - 从静态文件 JSON 提要更新数据库

转载 作者:搜寻专家 更新时间:2023-10-30 20:17:37 25 4
gpt4 key购买 nike

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

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

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

我该怎么做(最好是轻松地)来防止两个键重复?

例子:

我有一个包含以下列的表 events:

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

我的数据是我的 JSON 在第一次拉取时出现,如下所示:

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

然后下一个pull是这样的:

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

希望插入标有星号的行,而忽略其他行。请记住,primary_keyid 完全在这个表中,我只是为了普遍使用它。

我可以使用什么命令来“插入”我提取的每个事件,但只添加那些没有通过 event_idaction_id 两列复制的事件。

谢谢。

最佳答案

为两列创建唯一索引。

CREATE 
UNIQUE INDEX event_action
ON tablename (event_id, action_id)

关于php - 从静态文件 JSON 提要更新数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29811710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com