1
我正在尝试处理一些非常大的制表符分隔文件。这个过程是:如何在异常之后继续处理Ruby中的块?
begin
Dir["#{@data_path}*.tsv"].each do |file|
begin
CSV.foreach(file, :col_sep => "\t") do |row|
# assign columns to model and save
end
@log.info("Loaded all files into MySQL database illu.datafeeds")
rescue Exception => e
@log.warn("Unable to process the data feed: #{file} because #{e.message}")
next
end
end
然而,当我执行此我得到以下错误:
Unable to process the file: /Users/XXXXX_2013-06-12.tsv because Illegal quoting in line 153.
的文件是太大了,我去和修复错误行。我希望进程继续循环并处理文件,即使有错误行。
有什么建议吗?
谢谢。
我没有找到你所建议的方法的成功。如果我改变为救援零,该块仍然失败,我只是没有得到任何错误消息。如果我使用error_log.info(row.to_s),则失败,因为(row.to_s)不在CSV.foreach之外。 – analyticsPierce
我试过了。 开始 Dir [“#{data_path} *。tsv”]。do | file | (文件,:col_sep =>“\ t”)do | row | begin CSV.foreach #做的东西 结束 @ log.info(“装所有文件”) 救援 @ log.info(row.to_s) 结束 结束 结束 – analyticsPierce
其实我得到这个由行错误捕获移动工作在CSV.foreach循环中开始救援块。谢谢。 – analyticsPierce