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