如何忽略mongodb的致命错误,防止它破坏我的长时间解析任务

时间:2015-04-25 03:18:08

标签: mongodb mongoid

我正在导入数十亿条记录,将其插入mongoDB。

运行大约10个小时后,我收到错误'客户端错误:剩余数据太小而不适用于BSON对象'。

然后错误打破了我的任务,

我尝试使用try exception跳过有缺陷的数据,并继续前进。

但它也没有用。(异常仍然会破坏解析任务)

所以我想知道如何让mongoDB不破坏我的脚本,即使发生了一些错误,也只是忽略它并继续前进。

  def bulk_insert_to_collection(collection_name)
    model = collection_name.capitalize.constantize.new
    begin
      model.collection.insert(@data_in_chunk)
    rescue Exception => e
      # ignore it
    end
  end

1 个答案:

答案 0 :(得分:0)

将批量插入放在循环中,这样当一个批次失败时,您可以继续前进到下一个批次。你应该一次只插入1000,因为that is what mongo supports。这样您就可以在不丢失插入性能的情况下处理故障而不必丢失。