我有一个数据库,速度不是很快,而且我有一个大约 65000 行的大 CSV。我需要交叉检查这些是否存在,并在需要时更新数据库。
- 在 CSV 中,有一列包含数据库 ID。它始终是 1:1 的关系。
- CSV 可能会保存数据库的新输入,因此可能会出现没有数据库条目的情况。
- 我无法遍历 CSV 并检查每一行,因为它太慢了。
- 首先从数据库中获取所有结果并将它们存储在每次循环中都是行不通的,因为这会占用大量 RAM。
我该如何执行以下操作:
- 检查 CSV 中的一行是否有数据库条目。如果是这样,请将其写入另一个 CSV 文件。
- 如果该行没有数据库条目,则将其写入不同的文件。
- 将时间跨度保持在 5 分钟以内,最好更短。
CSV 有很多列(例如 70),但我只需要第 5 列来交叉检查 ID。我曾尝试先遍历 CSV 文件,然后用数据库检查它,但这太慢了。可能需要 10 多分钟。我还尝试从数据库中获取所有条目,并循环遍历这些条目。使用循环,运行 CSV(使用 a BufferedStream
)并检查它。这确实显着减少了时间(最多 5 分钟),但将无法记录数据库中不存在的条目。
有什么办法可以在保持速度的同时做到这一点?