【发布时间】:2019-01-25 10:59:41
【问题描述】:
我每天早上 5:19 都会收到一份 CSV。 CSV 中的信息用于填充/更新我的 sql 数据库中的表。
我有 3 张桌子:
tempVehicle (temporary table, just for holding info),
vehicle (contains most info, main table),
and vehicleImages (table linked to vehicle by VIN).
我需要从表格中删除新 CSV 中未包含的信息,并将新信息从 CSV 获取到表格中。
我是这样设置的:
- 放下 tempVehicle,彻底擦桌子
- 为新表重新创建 tempVehicle
- 将 CSV 数据导入 tempVehicle,用作临时信息持有者
- 从vehicleImages 表中删除所有数据,以便我可以从主表(车辆)中删除项目
- 从车辆表中删除所有数据
- 从 tempVehicle 插入到车辆表
- 通过分解 CSV 中的图像链接来更新车辆图像,然后将忽略插入到车辆图像中
我共有 7 个 PHP 文件,每个文件都与上述步骤之一相关联。我这样做是因为它们必须按特定顺序发生,而我不知道如何在保持特定顺序的同时让多查询工作。
在一个完美的场景中,我希望在一个 php 文件中使用单个多查询来设置它。我计划每天使用一个 cron 作业来运行这个文件,并且宁愿不必运行多个 cron 作业。
所以如果可能的话,我想回答的问题是:
有没有更好的方法来更有效地更新表?
如果没有,是否可以将我的所有查询合并为一个多查询?
如果有人有任何其他建议,我很乐意。
【问题讨论】:
-
答案:1) 是的。 2) 是的,看看 TRANSACTIONS
-
创建新表,如
temp_{table}填充它,然后我认为您可以重命名它而不必删除任何一个表。这应该会节省一些时间,而不是删除重命名删除。