Mysql 导入包含多条记录的CSV-更新多行

Mysql 导入包含多条记录的CSV-更新多行,mysql,sql,database,Mysql,Sql,Database,我有一张表,上面有大约10万个项目编号: id,itemnumber,text,原始数量,计数数量 我现在正在导入一个可能包含100K条记录的CSV文件: 项目编号\u在,数量 它包含实际库存的计数-然后我现在需要为CSV中的每条记录更新主数据库中的“计数数量” 我该怎么做呢?我是否会从头到尾阅读文件中的每一行并执行以下操作: UPDATE maintable SET counted_qty = counted_qty + qty WHERE itemnumber_in = itemnumber

我有一张表,上面有大约10万个项目编号:

id
itemnumber
text
原始数量
计数数量

我现在正在导入一个可能包含100K条记录的CSV文件:

项目编号\u在
数量

它包含实际库存的计数-然后我现在需要为CSV中的每条记录更新主数据库中的“计数数量”

我该怎么做呢?我是否会从头到尾阅读文件中的每一行并执行以下操作:

UPDATE maintable SET counted_qty = counted_qty + qty WHERE itemnumber_in = itemnumber

或者是否有更智能/更快的方法来执行此操作。

使用
加载数据读入CSV文件,然后使用连接更新
项目编号

UPDATE itemnumbers a INNER JOIN import b
    ON a.itemnumber = b.itemnumber_in
SET a.counted_qty = a.counted_qty + b.qty
这种方法的好处是,
itemnumbers
中的记录只有在与输入CSV文件中的内容匹配时才会更新

更新:

如果首先要按id号聚合导入的数据,则可以在
UPDATE
语句中使用子查询:

UPDATE itemnumbers a
INNER JOIN
(
    SELECT itemnumber_in, SUM(qty) AS qty
    FROM import
    GROUP BY itemnumber_in
) b
    ON a.itemnumber = b.itemnumber_in
SET a.counted_qty = a.counted_qty + b.qty

非常感谢-如果CSV文件中有多个相同itemnumber的实例(将有),这也会起作用吗?那么您是说相同的id可能会在导入中出现多次?如果是这样的话,那么您想聚合数量字段吗?是的,例如,itemnumber 11223344可以有50个数量-但CSV文件中可以有50个数量为1的记录。@thorway我用一种方法更新了我的答案,我认为如果您想先聚合导入数据,这种方法是可行的。