[mysql] 導入CSV以僅更新表中的一列



Answers

我會將更新數據加載到單獨的表UPDATE_TABLE並使用以下命令在MySQL中執行更新:

UPDATE PRODUCTS P SET P.QUANTITY=(
    SELECT UPDATE_QUANTITY
    FROM UPDATE_TABLE
    WHERE UPDATE_PRODUCT=P.PRODUCT
)

我現在手頭沒有MySQL,所以我可以完美地檢查語法,可能需要在內部SELECT添加LIMIT 0,1

Question

我有一個看起來像這樣的表:

products
--------
id, product, sku, department, quantity

此表中有大約800,000個條目。 我收到了一個新的CSV文件,用於更新每種產品的所有數量,例如:

productA, 12
productB, 71
productC, 92

因此,大約有750,000個更新(50,000個產品的數量沒有變化)。

我的問題是,如何導入此CSV以僅更新基於product的數量(唯一),但僅保留skudepartment和其他字段? 我知道如何通過循環CSV並為每一行執行更新來在PHP中執行此操作,但這似乎效率低下。




Links