导轨版本: 4.2.7
红宝石版本: 2.3.3
我正在运行一个 rake 任务,将数百万个对象从 CSV 和 JSON 文件格式迁移到我的 postgres 数据库中。
我试图利用activerecord-import
它来加快将对象写入数据库的速度。
尽可能简化代码,前半部分处理对象类型一(来自一种数据类型),后半部分处理对象类型二。
第一个对象类型像这样迭代(为问题简化):
importing_object_one_array = []
my_external_data.each do |element|
new_element = ObjectOne.new(
title: element[0],
body: element[1]
)
importing_object_one_array << new_element
end
ObjectOne.import importing_object_one_array, validate: false
这在大约 250,000 个对象上运行,并且编写时没有任何问题,我在控制台中进行了检查,并且对象已成功写入。
然而,对象类型 2 有一些额外的对象,每个对象的大小和设计都与对象类型 1 大致相同。
其中大约有 4,040,000 个。
我应该等待多长时间ObjectTwo.import
才能运行?我们现在进入几个小时。
或者,从调试的角度来看(因为我真的不想重新运行这个 rake 任务,除非我绝对必须这样做),哪些脚本或策略对于查看当前是否ObjectTwo.import
真的在运行(即使它一直在运行)或者如果任务挂了?
ObjectTwo
我检查了 rails 控制台,我们在数据库中的 's数量似乎和以前一样。
我唯一的另一个想法是,由于我在运行之前没有打印到控制台#import
(即喜欢puts "Now starting import!"
),所以我没有 100% 的证据证明在数组中构建的对象已经完成。