首页 > 解决方案 > 从大型 CSV 文件更新、插入和删除大型 MySQL

问题描述

我们每天收到大约 1000 万行 CSV 文件中的数据。此 CSV 文件包含大约 5,000 种产品的位置和价格数据。

有时 CSV 会更新,有时会保持不变。CSV 中的数据是事实的来源(例如,我们总是希望在应用程序中使用的数据)。

这是 CSV 的一个片段:

UUID,Location,Price
AAA,Melbourne,21.96
AAA,Sydney,32.43
BBB,Melbourne,23.43
BBB,Adelaide,32.43

我们需要将最新数据存储在 MySQL 数据库之外。

以下是需要如何存储这些数据的示例:

位置_数据:

ID,ProductID,Location,Price
1,1,Melbourne,21.96
2,1,Sydney,32.43
3,2,Melbourne,23.43
4,2,Adelaide,32.43

产品:

ID,UUID (and other fields not relevant to this question)
1,AAA
2,BBB

对于初始导入,我们使用 MySQL LOAD DATA IN FILE。这是相当快的。这是过程:

更新的 CSV 文件可能包含新的位置、更新的价格或不再存在的位置。我们需要UPDATEINSERT并且DELETE在所有这些情况下。

继续讨论这个问题......我们正在努力解决如何在收到已更改的新 CSV 文件时快速更新数据库。

不幸的是,我们只提出了两个不适合我们的选项:

关于我们如何设法加快速度的任何建议?

标签: javapythonmysqldatabasecsv

解决方案


推荐阅读