csvファイルをデータベースにインポートしようとしていますが、何時間も楽しんだ後、問題が何であるかを特定しました.remarksフィールドには引用符が含まれていることがあり、置き換える\"
と\""
フィールドは問題なくインポートされます.
csv ファイルをインポートし、gsub を使用して置き換える rake タスクを作成しました\"
が\""
、gsub は何もしていません。完全なコードを含む rake タスクは次のとおりです。
csvproperty.rake
require 'csv'
task :csv_to_properties => [:environment] do
CSV.foreach("lib/assets/wp_realty_listingsdb.csv", :headers => true) do |row|
row[remarks=23].gsub!(/\"/, '\""')
Property.create!(row.to_hash)
end
end
備考欄は 23 列目 (0 から数えます) ですが、22 と 24 で試してみましたがうまくいきませんでした。gsub を使用して価格フィールドからカンマを削除するために別のアプリでまったく同じ rake タスクを使用したため、このコードが機能することはわかってい\"
ます\""
。
編集:
たとえば、csv ファイルの 8 行目のこのプロパティの注釈は次のとおりです。
"THIS HOME EPITOMIZES THE VERY ESSENCE OF A PERFECT \"10\"."
csv は実行して引用符をエスケープしようとしました\"
が、それだけでは十分ではありません。次の\""
コマンドを実行すると、次のようになる必要があります。
rake csv_to_properties
次に、次のエラーが表示されます。
rake aborted!
Missing or stray quote in line 8
しかし、手動で変更すると\""
、エラーは引用符のある次の行に移動します。
rake aborted!
Missing or stray quote in line 24
しかし、手動で変更せず、gsub に依存して変更を行うと、エラー メッセージが 8 行目に残ります。gsub が に置き換え\"
られないのはなぜ\""
ですか?