Поля Rails FasterCSV без кавычек не позволяют \r или \n

У меня проблема с FasterCSV и миграцией rake db:seeds. Я получаю сообщение об ошибке: «грабли прерваны! Поля без кавычек не допускают \r или \n (строка 2)» для следующих данных seed.rb:

require 'csv' 

directory = "db/init_data/"

file_name = "gardenzing020812.csv"
path_to_file = directory + file_name
puts 'Loading Plant records'
# Pre-load all Plant records
n=0
CSV.foreach(path_to_file) do |row|
  Plant.create! :name => row[1],
  :plant_type => row[3],
  :group => row[2],
  :image_path => row[45],
  :height => row[5],
  :sow_inside_outside => row[8]
n=n+1
end                 

Я искал решение этой проблемы и обнаружил, что для многих это проблема с кодировкой UTF-8. Я пробовал требовать iconv и :encoding => 'u', но это выдавало мне ошибку «недопустимая последовательность байтов в UTF-8».

Я новичок, и я не могу понять, действительно ли это проблема с кодировкой, которую мне нужно взломать (что я безуспешно пытался сделать, и если это так, я мог бы действительно использовать некоторые рекомендации) или, что более вероятно, я чувствую, что я сделал простую ошибку и сделал что-то не так с тем, как я настроил seed.rb и, возможно, мой файл excel -> csv. В файле csv нет плохих или неудобных данных. Это простые строки из одного слова, текст и целые числа. Пожалуйста помоги!


person Matthew Melone    schedule 08.02.2012    source источник
comment
Можете ли вы показать нам, какая часть CSV вызывает проблемы?   -  person mu is too short    schedule 08.02.2012
comment
@muistooshort дайте мне знать, если вам нужен более крупный снимок. Это файл целиком. Я обрезал свой файл seed.rb в посте, но мой фактический код анализирует все столбцы на этом листе.   -  person Matthew Melone    schedule 09.02.2012
comment
Есть ли шанс увидеть необработанный CSV?   -  person mu is too short    schedule 09.02.2012
comment
Теперь я вижу в текстовом файле, что некоторые из моих столбцов содержат кавычки. Это проблема?   -  person Matthew Melone    schedule 09.02.2012
comment
Похоже, это может быть проблемой. Вам лучше цитировать все значения столбца, чтобы быть в безопасности.   -  person mu is too short    schedule 09.02.2012
comment
Я вырезал все столбцы, которые создавались вокруг текста, и миграция по-прежнему выдает ту же ошибку. Далее я попытаюсь поставить все в кавычки, но я действительно надеялся избежать этого решения, поскольку оно как бы ставит под угрозу исходный документ Excel.   -  person Matthew Melone    schedule 09.02.2012
comment
Почему в заголовке написано fastcsv, когда вам нужен csv?   -  person mcr    schedule 03.05.2012


Ответы (3)


Это было так же просто, как очистить все форматирование в csv. У Excel, похоже, есть привычка сохранять большую часть форматирования после сохранения в файле csv, что вызывало сбой. После того, как я скопировал и вставил все данные без форматирования в новый файл csv, все было в порядке.

person Matthew Melone    schedule 10.02.2012

Используйте String.encode(universal_newline: true) вместо gsub. Преобразование CRLF и CR в LF # Всегда разрывать строки с помощью \n

person Vaisakh VM    schedule 31.12.2014

У меня недостаточно репутации, чтобы комментировать, но я хотел сказать, что искал эту ошибку в Интернете день и ночь в течение длительного времени и, наконец, нашел решение в комментариях, по мю слишком короткий.

Я, наконец, заставил это работать, когда поставил кавычки вокруг всех своих значений.

РЕДАКТИРОВАТЬ: Ссылка на ответ!!! Поля Rails FasterCSV без кавычек не позволяют \r или \n

person Nick Schwaderer    schedule 17.12.2014
comment
Можете ли вы хотя бы дать ссылку на пост, в котором вы его нашли, чтобы людям не пришлось копаться в 5000 его ответов? - person Marv; 18.12.2014
comment
@Marv Я подозреваю, что они говорят о моем. Вам лучше процитировать все значения столбца на всякий случай. прокомментируйте этот вопрос. И я немного стесняюсь 5000 ответов :) - person mu is too short; 18.12.2014
comment
@muistooshort О. Эээ, это произошло во время прохождения очереди проверки первых ответов. Я думал, что он нашел решение в одном из ваших других ответов. Виноват! - person Marv; 18.12.2014
comment
stackoverflow.com/questions/9200175/ - person Nick Schwaderer; 18.12.2014
comment
Есть ли шанс, что кто-нибудь может опубликовать пример кода о том, как выглядит помещение кавычек вокруг значений? это :plant_type => row["3"], ? (предположим, что нет) - person sulleh; 22.08.2018