首页 > 解决方案 > mysql中的大表每次都基于csv更新行

问题描述

我有 50 万行的表,我假设我每小时都会收到 CSV 文件,我需要根据 CSV 更新我的 MySQL 表。它可能包含新行或某些行可能会被修改。该表有一个主键(名为 SKU )

产品表列:

  1. 库存单位
  2. 产品详情
  3. 价格

我想尽可能快地做到这一点,一个条件是我不能删除表并再次加载,因为“支持将给定文件定期非阻塞并行摄取到表中”是我的主要要求。

我可以使用 Python 等脚本语言。

我有一个解决方案是创建一个临时表并将数据导入表中,然后更新我的主表。

任何帮助或建议表示赞赏

标签: pythonmysqlcsvdata-science

解决方案


如果新数据是一个完整的集合,请执行以下操作:

  1. CREATE TABLE new LIKE real;
  2. LOAD DATA INFILE INTO new ... 这是唯一缓慢的步骤,但不会影响real桌子。
  3. 如果您需要清理数据,请在此步骤中执行。否则,您不需要 Python。
  4. RENAME TABLE real TO old, new TO real; 这一步很快。
  5. DROP TABLE old;

如果传入的数据不包含所有 SKU,请参阅此处的技术:http: //mysql.rjweb.org/doc.php/staging_table


推荐阅读