我有一个包含数千行的excel文件。在我的例子中,我不能使用大容量插入,因为对于每一行,我应该创建几个关联。现在,所有进程花费超过1小时的20k行,这是地狱。解决这个问题最好的办法是什么?
我使用的是电子表格创业板。
发布于 2013-05-08 07:17:25
这类似于Rails喜欢遇到的臭名昭著的"1+N“查询情况。我也有类似的情况(导入具有多个关联的20k+行文件)。我优化这个过程的方法是为关联预加载散列。因此,例如,如果您有一个包含导入数据中的AssociatedModel的lookup_column,那么首先构建一个哈希:
associated_model_hash = Hash.new(:not_found)
AssociatedModel.each do |item|
associated_model_hash[item.lookup_column] = item
end这提供了对象的散列。你可以重复尽可能多的联想。在导入循环中:
associated_model = associated_model_hash[row[:lookup_column]]
new_item.associated_model_id = associated_model.id因为您不必每次都对数据库进行搜索,所以这样做要快得多。它还应该允许您使用大容量插入(假设您可以保证关联的模型不会在加载期间被错误地删除或修改)。
https://stackoverflow.com/questions/16430399
复制相似问题