下面是我使用的代码。当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!