[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和其他字段單獨保留? 我知道如何在PHP中通過循環遍歷CSV並為每一行執行更新,但這似乎效率低下。