【发布时间】:2017-01-30 17:59:31
【问题描述】:
我有一个内部库存系统,其中包含以下 3 个表格
一个。股票 - 从 CSV 文件每日更新。
---------------------------------
| id | MODELNO | Discount | MRP |
---------------------------------
| 1 | MODEL_1 | 40% | 900 |
| 2 | MODEL_A | 20% | 600 |
---------------------------------
每天都会截断此表,并从商家的 CSV 文件中导入新的股票数据。(大约 600 万条记录)
b. Cloths Master - 服装大师数据库
----------------------------------------
| ref_id | MODELNO | Name | MRP |
----------------------------------------
| 80 | MODEL_1 |Some Dress | 900 |
| 81 | MODEL_A |Another Dress| 600 |
----------------------------------------
MODELNO 是唯一的,ref_id 是主键。此表是内部 Inventory 应用程序的一部分(大约有 450 万条记录)
c。库存表 - 它是内部应用程序的一部分
-------------------------------------------------
| id | ref_id | Name | MRP | status |
-------------------------------------------------
| 1 | 80 |Some Dress | 900 | ACTIVE |
| 2 | 81 |Another Dress| 600 | INACTIVE |
--------------------------------------------------
此表存储产品的可用库存,基于库存,如果折扣超过 40%,则产品为ACTIVE,否则默认为INACTIVE。
所需的功能是每天我都需要运行一个脚本来循环遍历库存表记录,并且对于 MODELNO 更新库存表中的库存,如果库存表中的记录不存在,那么它需要待补充。
到目前为止,我尝试过的是一个 PHP 脚本。 一个。首先,将 Inventory 表中所有记录的状态设置为 INACTIVE。 湾。并且对于stocks 表中的每条记录,检查MODELNO 是否存在于Cloths Master 表中。 湾。如果记录存在,则获取 ref_id,并检查 ref_id 是否存在于 Inventory Table 中并相应地更新/插入记录。
问题是脚本需要超过 8 小时才能完成。
您能否提出一种有效的方法,可用于实现上述功能。
注意: Inventory 表的所有插入和更新都是使用 CodeIgniter 的批量插入/更新功能完成的。 我将所有状态设置为 INACTIVE,因为 Stock DB 中可能不存在少数产品。
【问题讨论】:
-
提示:不要存储 '%'。
-
会这样做,顺便说一句,我已经使用 Mysql Load Inline 将 CSV 文件转储到 DB。还添加了 MODELNO 和 ref_id 字段的索引
标签: php mysql database codeigniter database-trigger