当前位置: 首页 > 面试题库 >

导入CSV以仅更新表中的一列

慕容安易
2023-03-14
问题内容

我有一个看起来像这样的表:

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

该表中大约有800,000个条目。我收到了一个新的CSV文件,该文件更新了每种产品的所有数量,例如:

productA, 12
productB, 71
productC, 92

因此,大约有750,000个更新(50,000个产品的数量没有变化)。

我的问题是,如何导入CSV这个只更新的基于关闭的数量product(唯一的),但离开了skudepartment独自一人,和其他领域?我知道如何在PHP中通过遍历CSV并为每一行执行更新来做到这一点,但这似乎效率很低。


问题答案:

您可以用来LOAD DATA INFILE将800,000行数据批量加载到临时表中,然后使用多表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;


 类似资料:
  • 问题内容: 开发机是Mac。我在从CSV导入多个行到Mysql时遇到了一些麻烦。这是我的SQL语句: 它运行良好,但仅导入了一条记录。知道我哪里出错了吗? 问题答案: 检查行尾: 但最常见的问题是,行终止符不是您期望的,请尝试:

  • 嗨,当我试图更新一个jdbc表时,只有第一行被更新,下面是它的代码。虽然我对每一行都有一个单独的按钮,但我单击的任何按钮都将输入值作为第一行的值。 为了比较,我使用了下面的条件(for where条件),它也只取第一行值 我使用的更新是

  • 问题内容: 我有一个大约有2000条记录的CSV文件。 每个记录都有一个字符串和一个类别: 我需要将此文件读入如下列表: 如何使用Python将CSV导入到我需要的列表中? 问题答案: 使用csv模块: 输出: 如果你需要元组: 输出: 旧的Python 2答案,也使用csv模块:

  • 问题内容: 将csv文件上传到mysql表的最佳/最快方法是什么?我想将第一行数据用作列名。 发现了这一点: 如何将CSV文件导入MySQL表 但是唯一的答案是使用GUI而不是Shell? 问题答案: 您无需编写脚本即可从CSV文件中提取信息,而是可以直接将MYSQL链接到该文件并使用以下SQL语法上传信息。 要将Excel文件导入MySQL,请先将其导出为CSV文件。从生成的CSV文件中删除CS

  • 问题内容: 我有一个 MySQL 表: 还有一个带有以下列的 CSV 文件: 在MySQL表中,所有行的列均为空白,当前数据存在于CSV中。 我想将CSV文件中的列导入到MySQL表中,以匹配行。 我怎样才能做到这一点? 问题答案: 感谢您为我指明正确的方向:花式裤子。 我最终像这样解决了它: 在数据库中创建了一个新表,该表使用CSV中的列进行调用。 使用phpMyAdmin将LOAD DATA导

  • 我创建了一个用于插入和更新的SQL触发器,它基本上执行以下操作: 从插入的表中获取LineID(表的PrimaryID)和RegionID,并将其存储在INT变量中。然后,它对连接表进行检查,以找到RegionID应该是什么,如果RegionID不等于插入表中应该是什么,那么它应该更新该记录。 我的问题是,它没有更新记录,我猜,这是因为记录还没有插入到PurchaseOrderLine表中,我正在