Я пытаюсь импортировать файл csv в свою базу данных и после нескольких часов удовольствия я определил, в чем проблема: поле примечаний иногда имеет в нем кавычки, и если я заменю \"
на \""
то поле не импортируется без проблем.gsub! не делаю ничего в rails rake task
Я написал задачу рейка, чтобы импортировать файл csv и использовать gsub для замены \"
с помощью \""
, но gsub ничего не делает. Вот реки задача с полным кодом:
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 с не повезло. Я знаю, что этот код работает, потому что я использовал ту же самую задачу rake в другом приложении, используя gsub, чтобы удалить запятую из поля цены, и она отлично работала, почему он не заменяет \"
\""
?
EDIT:
Например, замечания этого свойства на 8-ой строке файла CSV являются:
"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 не заменяет \"
на \""
?
Я не уверен, если вы вылетающих из ' "'или это на самом деле' \" '. Как выглядит текст? 'sometext" или 'sometext \" '? –
см. Редактирование. Проблема заключается не столько в ускорении кавычек, сколько в том, что я решил, что это должно быть », но проблема в том, почему не работает gsub, как сказано? – railsy
Я не уверен, почему это не спасает. Попробуйте 'gsub! ('' ',' '')'. –