我有两个 MySQL 表。第一个表有一个 cron 作业正在运行,它每五分钟更新一次。当 cron 作业运行时,它将所有数据从第一个表移动到第二个表(存档表),截断第一个表,然后更新 CSV 文件中的信息,该文件在某个 URL 处不断更新。我通过将结构从一个表复制到下一个表来制作表格(因此它们的结构相同)。
这是我正在运行的代码,它有效:
$sql = "
INSERT INTO table2 (id, time, size, location, county, state, lat, lon, comments)
SELECT id, time, size, location, county, state, lat, lon, comments FROM table1";
$result = $mysqli->query($sql);
问题是,cron 作业运行如此频繁,以至于它并不总是会完全更新,因此它会在 table2 中生成重复条目。这是我试图使用的代码,但它似乎不起作用:
$sql = "
INSERT INTO table2 (id, time, size, location, county, state, lat, lon, comments)
SELECT id, time, size, location, county, state, lat, lon, comments FROM table1
ON DUPLICATE KEY UPDATE id=id
";
$result = $mysqli->query($sql);
我已确保两个表的键相同(id)。
这些操作不能一起工作还是我的语法在某个地方有错误?我想尝试一次性运行这些操作,而不是更新表,然后运行不同的操作来消除重复项。
谢谢你的帮助!