我有两个大型 CSV 文件。一个文件只是一个记录列表。另一个文件是记录列表,但第一列是它在另一个文件中修改的记录的行号。它不会替换整行;它只是替换具有匹配标题的行中的值。
例如:
文件 1:
"First","Last","Lang"
"John","Doe","Ruby"
"Jane","Doe","Perl"
"Dane","Joe","Lisp"
文件 2:
"Seq","Lang"
2,"Ruby"
目标是最终得到一个如下所示的文件:
"First","Last","Lang"
"John","Doe","Ruby"
"Jane","Doe","Ruby"
"Dane","Joe","Lisp"
然而,数据比这复杂得多,甚至可能在 CSV 中包含换行符。因此,我不能依赖行号,而必须依赖记录数。(当然,除非我预处理这两个文件以替换换行符和回车符......我认为这是可能的,但不太有趣。)
我的问题是如何循环遍历这两个文件并进行正确的替换,而不将整个文件中的任何一个加载到内存中。我相信将 100mb+ 文件加载到内存中是个坏主意,对吧?
此外,结果文件中的记录在完成后应该是相同的顺序。