我有一个非常大的文件(数据转储),它有几亿条记录。我需要根据该数据转储文件构建TSV。
列由" \ 001"分隔。
我正在做这样的事情:
require 'csv'
CSV.open(tsv_path, 'w', col_sep: "\t") do |tsv|
File.open(data, 'rb').each do |line|
row = line.split("\001")
tsv << row
end
end
这太疯狂了。对于具有2亿行的数据转储文件,需要1小时30分钟。
在Ruby中有更快的方法吗?
答案 0 :(得分:1)
首先,我可能会用sed或tr来做这件事。但如果您坚持使用ruby,我就不会使用csv库。所有你真正做的就是用\ t来搜索和替换\ 001,这基本上是对tr的调用,ala
puts line.tr("\001", "\t")