У меня очень большой файл в миллионах строк, и я хочу вставить их в базу данных, но не могу одновременно создать или импортировать, потому что он блокирует дБ и требует много оперативной памяти.Итак, я хочу создать задания, которые читают индекс в индекс из файла csv (например, первое задание читает от 0 до 1000 строк, другое задание читает от 1000 до 2000, как разумно), но я думаю, что CSV.foreach не имеет такой функции, и яне может отправить 1000 строк данных в качестве аргумента задания и не может открыть этот файл в каждом задании.Поэтому, пожалуйста, наведите меня
Получив путь к файлу, я прочитал общее количество строк (предположим, 1 миллион) и разделил на 1000 заданий, где в каждом задании я даю путь к файлу и индекс, откуда задание должно начинаться с чтения.На каждой работе
def perform(file_name, index){
CSV.foreach(file_name, :headers => true) do |row| # want to start with index*1000
hash = row.to_hash
if if i>= index*1000 + 1000
Table.import arr_hash
arr_hash = []
break if i>= index*1000 + 1000
end
arr_hash<<Table.new(hash)
end
if arr_hash
Table.import arr_hash
end
}