Импортировать CSV партиями в Rails?

используя FasterCSV для импорта загруженного файла в модель,отлично работает для небольших файлов. Однако когда я пытаюсь импортировать большой набор данных (21 000 строк), это занимает много времени, и я получаю тайм-ауты браузера на работающем сервере.

Это мой текущий рабочий код: я

  logcount=0
  Attendee.transaction do
    FCSV.new(file, :headers => true).each do |row|
      row[1] = Date.strptime(row[1], '%m/%d/%Y')
      record = @event.attendees.new(:union_id => row[0], :dob => row[1], :gender => row[2])
      if record.save
        logcount += 1
      end
    end
  end

Я бы хотел использовать фоновый процесс, но пользователь должен увидеть, сколько строк было импортировано, прежде чем они смогут перейти к следующему шагу системы.

Итак, я думал, что я должен использоватьдействие chunking и только прочитайте меньшее количество строк, установите счетчик, затем обновите представление с некоторым прогрессом, затем снова запустите метод, используя предыдущий счетчик в качестве начальной точки.

Я могу'Кажется, мы не видим, как заставить FasterCSV читать только определенное количество строк, а также установить смещение для начальной точки.

Кто-нибудь знает как это сделать? Или есть лучший способ справиться с этим?

Ответы на вопрос(3)

Ваш ответ на вопрос