python - mysql中的大表每次都基于csv更新行
问题描述
我有 50 万行的表,我假设我每小时都会收到 CSV 文件,我需要根据 CSV 更新我的 MySQL 表。它可能包含新行或某些行可能会被修改。该表有一个主键(名为 SKU )
产品表列:
- 库存单位
- 产品详情
- 价格
我想尽可能快地做到这一点,一个条件是我不能删除表并再次加载,因为“支持将给定文件定期非阻塞并行摄取到表中”是我的主要要求。
我可以使用 Python 等脚本语言。
我有一个解决方案是创建一个临时表并将数据导入表中,然后更新我的主表。
任何帮助或建议表示赞赏
解决方案
如果新数据是一个完整的集合,请执行以下操作:
CREATE TABLE new LIKE real;
LOAD DATA INFILE INTO new ...
这是唯一缓慢的步骤,但不会影响real
桌子。- 如果您需要清理数据,请在此步骤中执行。否则,您不需要 Python。
RENAME TABLE real TO old, new TO real;
这一步很快。DROP TABLE old;
如果传入的数据不包含所有 SKU,请参阅此处的技术:http: //mysql.rjweb.org/doc.php/staging_table
推荐阅读
- iis - config.json 文件的奇怪行为
- youtrack - 你可以在同一个数据库上使用多个 YouTrack 实例吗?
- azure - SQL Azure Serverless 配置问题
- r - 更改 tbl_regression/tbl_uvregression 和 tbl_summary 中的默认变量值显示?#gtsummary
- elasticsearch - 如何在elasticsearch中做两个嵌套对象聚合?
- excel - 模糊字符串匹配 Excel
- scala - 从细化中获取正在细化的类
- ios - 在单击事件后更改 UiButton ImageView.alpha 中,如何保留以前的 alpha?
- kubernetes - 如何在 kubernetes 中调试与 istio 的 mTLS 通信?
- c# - 获取点后有多少个十进制数字