我有一个应用程序需要从一个有几亿行的数据文件中构建一个tsv文件。
现在我构建tsv文件的代码看起来像这样:
File.open(data, 'rb').each { |line|
row = to_tsv_row(line)) # this formats the row to be delimited by a tab
open(tsv_path, "a+") { |f| f << row }
}
这似乎是构建tsv文件的一种相当慢的方式(可能效率低下)。那里有一个可以快速有效地完成这项工作的图书馆吗?
答案 0 :(得分:0)
您可以使用Ruby的CSV库:
require 'csv'
CSV.open(tsv_path, 'w', col_sep: "\t") do |tsv|
File.open(data, 'rb').each do |line|
row = to_row(line) # this only needs to convert line to an array of Objects responding to to_s
tsv << row
end
end
在我的系统上花费大约10秒来完成一百万行,但我认为这在很大程度上取决于您的数据和硬件。一个拥有一亿行的TSV首先听起来像个坏主意。