Я задал вопрос this на этой неделе, и он отлично работал. Я просто попробовал это с чуть большей таблицей, и по какой-то причине она не работает.Импорт базы данных CSV в Rails
Мой код выглядит следующим образом:
require 'roo'
xlsx = Roo::Spreadsheet.open(File.expand_path('../Downloads/unistats/LOCATION.csv'))
xlsx.each_row_streaming(offset: 1) do |row|
Location.find_or_create_by(ukprn: row[0].value, accomurl: row[1].value, instbeds: row[3].value, instlower: row[4].value, instupper: row[5].value, locid: row[6].value, locname: row[7].value, lat: row[9].value, long: row[10].value, locukprn: row[11].value, loccountry: row[12].value, privatelower: row[13].value, privateupper: row[14].value, suurl: row[15].value)
end
Но в отличие от последнего времени, это приходит с этой ошибкой:
NoMethodError: undefined method `each_row_streaming' for #<Roo::CSV:0xb9e0b78>
Did you mean? each_row_using_tempdir
Этот файл является CSV, а не .xlsx, но тот не должен» t сделать разницу.
Любые идеи, что я делаю неправильно?
Почему бы это сделать разницу? –
Поскольку в документе Roo gem указано, что он работает с обоими типами файлов. Используя 'header = xlsx.row (1)', он показывает, что все столбцы находятся в ожидаемом месте. –
Правильно, он может открыть его, но вы должны использовать другой метод для чтения значений. –