-1

このエラーを解決するのを手伝ってください。

ruby スクリプトを使用してテキスト ファイルからデータベースにレコードをロードしているときに、このエラーが発生します。

少数のレコードを使用してデータベースにロードする場合は問題なく動作しますが、多数のレコードがある場合は失敗します。

CSV.foreach(fileName) do |line|
    completePath = line[0]                                                
    num_of_bps = line[1]

    completePath = cluster_path+ '/' + completePath
    inode = FileOrFolder.find_by_fullpath(completePath, :select=>"id") 

    metric_instance = MetricInstance.find(:first, :conditions=>["file_or_folder_id = ? AND dataset_id = ?", inode.id, dataset_id])
    add_entry(metric_instance.id, num_of_bps, num_of_bp_tests) 
end

def self.add_entry(metaid, num_of_bps, num_of_bp_tests)
    entry = Bp.new
    entry.metric_instance_id = metaid
    entry.num_of_bps = num_of_bps
    entry.num_of_bp_tests = num_of_bp_tests
    entry.save
    return entry
end  
4

1 に答える 1

0

次のようなことを試してください:

File.open(fileName) do |csv|
  csv.each_line do |line|
    CSV.parse(line) do |values|
      # Here you can do your manipulation
    end
  end
end

この方法は遅くなりますが、メモリ不足にならないようにする必要があります。

于 2013-06-14T14:01:59.597 に答える