将大数据转储文件转换为TSV

时间:2014-06-30 02:30:46

标签: ruby tsv

我有一个非常大的文件(数据转储),它有几亿条记录。我需要根据该数据转储文件构建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中有更快的方法吗?

1 个答案:

答案 0 :(得分:1)

首先,我可能会用sed或tr来做这件事。但如果您坚持使用ruby,我就不会使用csv库。所有你真正做的就是用\ t来搜索和替换\ 001,这基本上是对tr的调用,ala

puts line.tr("\001", "\t")