tsvファイルを解析してMySQLにロードしています。これを機能させたところ、tsvファイルに改行として解釈されているバックスラッシュがあることがわかりました。データがデータベースに送信される前に、すべてのフィールドから\を削除したいと思います。これは短縮例です。ファイルには300列あり、それらの多くは空白になります。
begin
CSV.foreach(file, :col_sep => "\t") do |row|
row.map!{ |e| e.gsub(/\\/, '')}
d = Datafeed.new
d.id = row[0]
d.description = row[1]
d.save!
end
end
この例を実行すると、エラーが発生します。nil:NilClassの未定義のメソッド`gsub'です。このエラーは、ファイル内の空白によって生成されていると思います。ただし、追加してみると
row.map!{ |e| unless e.blank e.gsub(/\\/, '') }
実行されず、予期しない}のエラーが発生します。
これは、バックスラッシュを削除するための正しい方向ですか?最善のアプローチは何ですか?
ありがとう