2013-03-28 2 views
0

Мой файл семян выглядит следующим образом ...Rails Seed.rb ncoding :: UndefinedConversionError: ошибка " xc2" при импорте CSV

csv_file_path = 'db/coned.csv' 
count = 0 
CSV.foreach(csv_file_path) do |row| 
    row = Section.new({ 
    :supervisor => row[0], 
    :catagory => row[1], 
    :title => row[2], 
    :description=> row[3], 
    :days => row[4], 
    :start_date => row[5], 
    :end_date => row[6], 
    :start_time => row[7], 
    :end_time => row[8], 
    :course_id => row[9], 
    :room => row[10], 
    :building => row[11], 
    :location => row[12], 
    :tuition => row[13], 
    :lab_fee => row[14], 
    :insurance_fee => row[15], 
    :technology_fee => row[16] 
    }) 
    row.save! 
    puts "Added row #{count}" 
    count+=1 
end 

... и я получаю эту ошибку, когда я запускаю грабли БД : seed

rake aborted! Кодирование :: UndefinedConversionError: «\ xC2» из ASCII-8BIT в UTF-8: ВСТАВИТЬ В «разделы» («building», «catagory», «course_id», «created_at», «days», «description», end_date "," end_time "," insurance_fee "," lab_fee "," location "," room "," start_date "," start_time "," supervisor "," technology_fee "," title "," tuition "," updated_at ") ЗНАЧЕНИЯ (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) /home/johnmlocklear/.rvm/ драгоценные камни/рубиново-1.9.2-P320/драгоценные камни/ActiveRecord-3.2.11/Библиотека/active_record/connection_adapters/sqlite_adapter.rb: 208: в encode' /home/johnmlocklear/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.11/lib/active_record/connection_adapters/sqlite_adapter.rb:208:in type_cast»

Любые идеи о том, как я могу просто поймать эту ошибку и бросок выйдите из этой строки и продолжайте импортировать строки. Или, возможно, какое-то принудительное кодирование?

ответ

1

Показ вашей линии с этим значением по умолчанию будет оценен по достоинству.

Если вы хотите, чтобы поймать ошибку, использовать некоторые исключения:

CSV.foreach(csv_file_path) do |row| 
    begin 
    row = Section.new({ 
     :supervisor => row[0], 
     .... 
     :technology_fee => row[16] 
    }) 
    row.save! 
    puts "Added row #{count}" 
    count+=1 
    rescue Exception 
    Rails.logger.error "Encountred error at line #{row.inspect}" 
    end 
end 
+0

Thanx ... который работал (вроде). Добавление rescure позволяет импортировать все мои данные, поэтому похоже, что это ошибка, но я не вижу «консольную ошибку в строке # {row.inspect}» в консоли. Мне интересно, нужно ли здесь предложение puts? – Lumbee

+1

Это зависит от того, кто этот код работает. Если вы запустите его в консоли, замените 'Rails.logger.error' на' $ stderr.puts'. – pierallard

+0

..thanx Norm ... это работает! – Lumbee

Смежные вопросы