ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

ruby rails 批量插入数据,bulk_insert-----Gem包使用

2021-07-12 02:01:36  阅读:234  来源: 互联网

标签:11 insert 07 17 rails bulk 2021 line 21


Gemfile文件里添加

gem 'bulk_insert' #批量插入

命令行执行安装依赖

bundle install

数据源

["1.180.3.187", 161, 2601]
["1.180.3.178", 161, 2601, 44222, 44333]

批量插入

def test3(param_str)
    log_dir = File.expand_path(File.join(Rails.root.to_s, 'log/nmapresult01_def_v2.log'))
    file = File.open(log_dir)
    file.each_line { |line|
      obj_line = JSON.parse(line)
      if obj_line.count > 0
        puts "obj_line:#{obj_line}"
        # 批量插入
        time = Time.now
        ip = obj_line.first
        obj_line.delete_at(0) #删除数据第一个元素
        Port.bulk_insert(:ip, :port, :created_at, :updated_at) do |ip_port|
          ip_port.set_size = 1000
          obj_line.each do |pt|
            ip_port.add [ip, pt, time, time]
          end
        end
      end
    }
    file.close
    param_str
  end

处理结果

obj_line:["1.180.3.187", 161, 2601]
   (0.2ms)  BEGIN
  SQL (0.5ms)  INSERT  INTO `ports` (`ip`,`port`,`created_at`,`updated_at`) VALUES ('1.180.3.187',161,'2021-07-11 17:43:21','2021-07-11 17:43:21'),('1.180.3.187',2601,'2021-07-11 17:43:21','2021-07-11 17:43:21')
   (13.1ms)  COMMIT
obj_line:["1.180.3.178", 161, 2601, 44222, 44333]
   (0.2ms)  BEGIN
  SQL (0.4ms)  INSERT  INTO `ports` (`ip`,`port`,`created_at`,`updated_at`) VALUES ('1.180.3.178',161,'2021-07-11 17:43:21','2021-07-11 17:43:21'),('1.180.3.178',2601,'2021-07-11 17:43:21','2021-07-11 17:43:21'),('1.180.3.178',44222,'2021-07-11 17:43:21','2021-07-11 17:43:21'),('1.180.3.178',44333,'2021-07-11 17:43:21','2021-07-11 17:43:21')
   (12.5ms)  COMMIT


表结构

class CreatePorts < ActiveRecord::Migration[5.0]
  def change
    create_table :ports do |t|
      t.string :ip
      t.integer :port, default: 0
      t.timestamps
    end
  end
end
CREATE TABLE `ports` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ip` varchar(255) DEFAULT NULL,
  `port` int(11) DEFAULT '0',
  `created_at` datetime NOT NULL,
  `updated_at` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

参考示例文章:
https://www.cnblogs.com/lmg-jie/p/9199529.html

文档
https://github.com/jamis/bulk_insert

标签:11,insert,07,17,rails,bulk,2021,line,21
来源: https://www.cnblogs.com/haima/p/15000353.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有