我有一个看起来像这样的表:
products -------- id, product, sku, department, quantity
该表中大约有800,000个条目。我收到了一个新的CSV文件,该文件更新了每种产品的所有数量,例如:
productA, 12 productB, 71 productC, 92
因此,大约有750,000个更新(50,000个产品的数量没有变化)。
我的问题是,如何导入CSV这个只更新的基于关闭的数量product(唯一的),但离开了sku,department独自一人,和其他领域?我知道如何在PHP中通过遍历CSV并为每一行执行更新来做到这一点,但这似乎效率很低。
product
sku
department
您可以用来LOAD DATA INFILE将800,000行数据批量加载到临时表中,然后使用多表UPDATE语法将现有表连接到临时表并更新数量值。
LOAD DATA INFILE
UPDATE
例如:
CREATE TEMPORARY TABLE your_temp_table LIKE your_table; LOAD DATA INFILE '/tmp/your_file.csv' INTO TABLE your_temp_table FIELDS TERMINATED BY ',' (id, product, sku, department, quantity); UPDATE your_table INNER JOIN your_temp_table on your_temp_table.id = your_table.id SET your_table.quantity = your_temp_table.quantity; DROP TEMPORARY TABLE your_temp_table;