在通过SQL将其插入数据库之前,应该如何处理解析后的文本?

时间:2015-12-04 18:35:41

标签: sql ruby-on-rails

由于速度提升的原因,我决定使用原始SQL。因此,使用ActiveRecord,填充DB的时间为17714 ms,现在我有1730 ms。好,不是吗?但这是一个问题,文本彼此不同,有些人不想去我的数据库。顺便说一句,对于同一组帖子,我通过AR与他们合作时没有遇到任何问题。

insert_arr = []
  walls.each do |wall|
    wall['items'].each do |post|
      if post['text'].empty?
        post['text'] = 'репост'
      else
        post['text'] = post['text'].slice(0, 100) + '...'
      end
      insert_arr.push "('#{@group[:id]}', '#{post['id']}', '#{post['date']}', '#{post['text']}')"
    end
  end
  sql = "INSERT INTO posts (`group_id`, `post_id`, `post_date`, `post_text`) VALUES #{insert_arr.join(', ')}"
  ActiveRecord::Base.connection.execute(sql)

我试图剪切文字,但没有帮助。但是,如果我删除文本就可以了! post['text'] = ''所以问题出在这里。请帮我。在插入文本之前我该怎么办?

1 个答案:

答案 0 :(得分:0)

而不是上面尝试使用常规的ActiveRecord方式,但用事务封装所有插入批量:

INSERT

在每次 var item = document.getElementByClass('object'); var innerImageId = item.firstChild.id; 节省大量时间后,它将避免SQL提交。