使用更智能的csv-gem并分块处理csv-我需要通过将键/值与另一个csv(1GB)进行比较来从一个大的csv(2GB



下面是我使用的代码。当Main.csv中"name"col的值等于Sub.csv中"name-col"的值时,我无法删除Main.csv中的行。请帮助我。我知道我错过了什么。提前谢谢。

require 'rubygems'
require 'smarter_csv'
main_csv = SmarterCSV.process('Main.csv', {:chunk_size => 100}) do |chunk|
short_csv = SmarterCSV.process('Sub.csv', {:chunk_size => 100}) do |smaller_chunk|
chunk.each do |each_ch|
smaller_chunk.each do |small_each_ch|
each_ch.delete_if{|k,v| v == small_each_ch[:name]}
end
end
end

结束

这是smarter_csv的一个非标准场景。。

Sub.csv有2000行。而Main.csv具有大约100万行。

如果你只需要决定name是否出现在两个文件中,那么你可以这样做:

1) 首先读取Sub.csv文件,然后将name的值存储在数组sub_names

2) 打开result.csv文件的输出文件

3) 读取Main.csv文件,以块为单位进行处理,如果名称未出现在数组sub_names中,则将每行的数据写入result.csv文件

4) 关闭输出文件-est-voila!

最新更新