Мне нужно импортировать большой CSV-файл, разбитый на мелкие куски, которые будут импортироваться каждые X часов.Импорт записей из CSV в небольших кусках (ruby on rails)
Я сделал следующее рейк задачу
task :import_reviews => :environment do
require 'csv'
CSV.foreach('reviews.csv', :headers => true) do |row|
Review.create(row.to_hash)
end
end
Использование Heroku планировщика я мог позволить эту задачу работать каждый день, но я хочу, чтобы разбить его на несколько кусков, например, 100 записей каждый день:
Это означает, что мне нужно отслеживать импортированную последнюю строку и начинать с этой строки + = 1 в следующий раз, когда я разрешу выполнение задачи рейка, как я могу это реализовать?
Заранее благодарен!
Можно ли записать в CSV в цикле foreach, чтобы я мог настроить обработанное поле после создания записи? – Laurens
не знаю, можете ли вы обновить поле с помощью обычного CSV-жемчужины, что хорошо для нового вопроса, я думаю, что это возможно с драгоценным камнем fastcsv. См. Http://stackoverflow.com/questions/3561278/parse-a-csv-update-a-field-then-save для пути – peter
Питер, не могли бы вы дать мне пример того, как добавить поле, обработанное на CSV после его чтения? У меня возникают трудности с написанием CSV в цикле foreach. Заранее спасибо. – Laurens