博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
批量插入数据
阅读量:4972 次
发布时间:2019-06-12

本文共 1055 字,大约阅读时间需要 3 分钟。

SQL 批量插入的方法:

INSERT INTO events (event_type, user_id) VALUES("test", 2),("test", 5),("test", 8) ...;

ref: , 

关于第三种方式,有 Gem 帮助我们简单来实现:

# Gemfilegem 'bulk_insert'

然后我们就可以用了:

Event.bulk_insert(set_size: 100) do |worker| receiver_ids.each do |user_id| worker.add({ user_id: user_id, event_type: 'test' }) end end

然大码实现多条插入:

class ActiveRecord::Base

  def self.import!(record_list)

     raise ArgumentError "record_list not an Array of Hashes" unless record_list.is_a?(Array) && record_list.all? {

|rec| rec.is_a? Hash }

    key_list, value_list = convert_record_list(record_list)

    sql = "INSERT INTO #{

self.table_name} (#{
key_list.join(", ")}) VALUES #{
value_list.map {
|rec| "(#{
rec.join(", ")})" }.join(" ,")}"

   self.connection.insert_sql(sql)

  end

  def self.convert_record_list(record_list)

    key_list = record_list.map(&:keys).flatten.uniq.sort

    value_list = record_list.map do |rec|

      list = [] key_list.each {

|key| list << ActiveRecord::Base.connection.quote(rec[key]) }

      list

    end

    return [key_list, value_list]

  end

end

转载于:https://www.cnblogs.com/qinyan20/p/9089171.html

你可能感兴趣的文章
硬件之美
查看>>
[转载]java开发中的23种设计模式
查看>>
表格的拖拽功能
查看>>
函数的形参和实参
查看>>
【TP SRM 703 div2 500】 GCDGraph
查看>>
webdriver api
查看>>
apache 实现图标缓存客户端
查看>>
揭秘:黑客必备的Kali Linux是什么,有哪些弊端?
查看>>
linux系统的远程控制方法——学神IT教育
查看>>
springboot+mybatis报错Invalid bound statement (not found)
查看>>
Linux环境下SolrCloud集群环境搭建关键步骤
查看>>
P3565 [POI2014]HOT-Hotels
查看>>
MongoDB的简单使用
查看>>
prometheus配置
查看>>
【noip2004】虫食算——剪枝DFS
查看>>
python 多进程和多线程的区别
查看>>
sigar
查看>>
iOS7自定义statusbar和navigationbar的若干问题
查看>>
[Locked] Wiggle Sort
查看>>
deque
查看>>