【问题标题】:Big table in mysql Updating rows based on csv every timemysql中的大表每次都基于csv更新行
【发布时间】:2020-11-25 06:35:44
【问题描述】:

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

产品表列:

  1. SKU
  2. 产品详情
  3. 价格

我想尽快执行此操作,一个条件是我无法删除表并再次加载,因为“支持将给定文件定期非阻塞并行摄取到表中”是我的主要要求。

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

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

感谢任何帮助或建议

【问题讨论】:

  • Informatica 或 Talend 等 ETL 工具可能会解决您的问题。
  • 如果架构不是一个约束,并且如果您可能将数据保存在 Elasticsearch 而不是 MySQL 中,则可以使用 Logstash 和 Elastic 轻松实现。

标签: python mysql csv data-science


【解决方案1】:

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

  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

【讨论】:

    猜你喜欢
    • 2021-12-13
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 2016-10-10
    • 2020-09-08
    相关资源
    最近更新 更多