我有一個內部庫存系統,下面3個表格爲根據另一個表引用ID更新/插入大型表記錄。
a。股票 - 每日更新一個CSV文件。
---------------------------------
| id | MODELNO | Discount | MRP |
---------------------------------
| 1 | MODEL_1 | 40% | 900 |
| 2 | MODEL_A | 20% | 600 |
---------------------------------
每天這個表將被截斷,新的股票數據從一個商人的CSV文件導入。(約6萬條記錄)
灣布大師 - 主衣服數據庫
----------------------------------------
| ref_id | MODELNO | Name | MRP |
----------------------------------------
| 80 | MODEL_1 |Some Dress | 900 |
| 81 | MODEL_A |Another Dress| 600 |
----------------------------------------
的MODELNO
是獨一無二的,ref_id
的主鍵。此表是內部庫存應用程序的一部分(擁有大約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腳本。 a。首先,將Inventory表中所有記錄的狀態設置爲INACTIVE。 b。對於庫存表中的每個記錄,檢查布料主表中是否存在MODELNO。 b。如果記錄存在,則獲取ref_id,並檢查相應的庫存表和更新/插入記錄中是否存在ref_id。
問題是腳本需要超過8個小時才能完成。
你能提出一個有效的方法,可以用來實現上述功能。
注意: 所有插入和更新到清單表使用CodeIgniter的批量插入/更新功能完成。 我將所有狀態設置爲INACTIVE,因爲可能很少有產品不在庫存數據庫中。
提示:請勿將「%」。 – Strawberry
這樣做,順便說一句我已經使用Mysql Load Inline將CSV文件轉儲到數據庫。還有MODELNO的索引,並且ref_id字段 – epynic