我有几个 (1-5) 个非常宽(约 50,000 列)的 .csv 文件。这些文件的大小为 (.5GB-1GB)(平均大小约为 500MB)。我需要对预先指定的列上的文件执行联接。效率当然是关键。任何可以扩展以有效地允许多个连接列的解决方案都是一个好处,尽管目前不是必需的。这是我的输入:
-主文件
-二级文件
-加入主文件的列(名称或列位置)
-加入二级文件的列(名称或列位置)
-左连接还是内连接?
输出 = 1 个包含多文件连接结果的文件
我希望使用基于 C 的语言来解决问题,但当然算法解决方案也会非常有帮助。
最佳答案
假设你有充分的理由不使用数据库(据我所知,50,000 列可能构成这样的原因),你可能别无选择,只能咬紧牙关为正确的文件建立索引.按顺序读取它以填充哈希表,其中每个条目仅包含键列和文件中整行开始的偏移量。然后索引本身应该可以轻松地放入内存中,如果您有足够的地址空间(即,除非您坚持使用 32 位寻址),您应该内存映射实际文件数据,以便您可以访问和输出适当的正确行当您按顺序浏览左侧 文件时很容易。
关于c++ - 如何使用 C/C++ 有效地加入巨大的 csv 文件(100 0's of columns x 1000' 行)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6985517/