[RUBY-ON-RAILS] 어떻게 레일에 대량 삽입을 구현하는 3
RUBY-ON-RAILS어떻게 레일에 대량 삽입을 구현하는 3
나는 내 연락처 테이블에 다른 기록과 같은 이메일의 배열을 삽입해야합니다. 이 방법을 수행 할 수 있습니다.
Eg: @email = ["a@b.com", "c@d.com", "e@f.com", ... ]
내가 사용하려는 해달라고.
@email.each do |email|
@contact = Contact.new
@contact.email = email
@contact.save
end
이 원인과 삽입 쿼리. 난 그냥이 값을 삽입 할 하나의 삽입 쿼리가 필요합니다. 어떻게 이런 일이 레일 3.0.9 (이상적으로 MySQL의)에서 수행 할 수 있습니다. 도와주세요
해결법
-
==============================
1.액티브 가져 오기 구현은 # 가져 오기를 AR
액티브 가져 오기 구현은 # 가져 오기를 AR
액티브 가져 오기는 액티브를 사용하여 대량 삽입 데이터에 대한 라이브러리입니다.
작동 방법 :
books = [] 10.times do |i| books << Book.new(:name => "book #{i}") end Book.import books
프로젝트의 홈은 Github에서에 그것은 위키입니다.
-
==============================
2.또한 액티브 수입으로 약 빠른 속도 인 upsert 시도하지만 MySQL은, 포스트 그레스, 및 sqlite3를로 (현재) 작품 수 :
또한 액티브 수입으로 약 빠른 속도 인 upsert 시도하지만 MySQL은, 포스트 그레스, 및 sqlite3를로 (현재) 작품 수 :
require 'upsert' Upsert.batch(Contact.connection, Contact.table_name) do |upsert| emails.each do |email| upsert.row(email: email) end end
참고이 레코드 당 하나 개의 데이터베이스 쿼리를 포함하지만, 당신이 레코드가 이미 존재 여부를 확인하지 않아도 그것은 "upsert"는 있다고. 당신의 예에서,이 문제가되지 않습니다 만, 대부분의 응용 프로그램에 결국 하나가됩니다.
-
==============================
3.추가 보석없이 가장 간단한 방법은 문자열을 CONCAT 하나 개의 SQL 삽입 (http://www.electrictoolbox.com/mysql-insert-multiple-records/)에서 그것을 실행하는 것입니다.
추가 보석없이 가장 간단한 방법은 문자열을 CONCAT 하나 개의 SQL 삽입 (http://www.electrictoolbox.com/mysql-insert-multiple-records/)에서 그것을 실행하는 것입니다.
@email = ["a@b.com", "c@d.com", "e@f.com"] time = Time.current.to_s(:db) values = @email.map do |email| "('#{email}', '#{time}', '#{time}')" end sql = "INSERT INTO contacts (email, created_at, updated_at) VALUES #{values.join(', ')}" Contact.connection.execute(sql)
-
==============================
4.난 그냥 체크 아웃, 단일 SQL 쿼리와 함께 많은 새로운 레코드를 삽입하기 위해 액티브 레코드 3.2을위한 작은 원숭이 - 패치를 썼다 :
난 그냥 체크 아웃, 단일 SQL 쿼리와 함께 많은 새로운 레코드를 삽입하기 위해 액티브 레코드 3.2을위한 작은 원숭이 - 패치를 썼다 :
https://github.com/alexdowad/showcase/blob/master/activerecord/bulk_db_operations.rb
from https://stackoverflow.com/questions/8505263/how-to-implement-bulk-insert-in-rails-3 by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 레일 3 개발을위한 기본 URL 변경 (0) | 2020.02.24 |
---|---|
[RUBY-ON-RAILS] 긴 delayed_job 작업은 Heroku가에 다시 시작하면 잠금이 유지 실행 (0) | 2020.02.24 |
[RUBY-ON-RAILS] 어떻게 동기에서 자식의 repo의 공공 및 민간 버전을 유지하려면? (0) | 2020.02.24 |
[RUBY-ON-RAILS] Windows에서 페이지 보석을 설치할 수 없습니다 (0) | 2020.02.24 |
[RUBY-ON-RAILS] 오류 ArgumentError :와 ApplicationController의 사본 모듈 트리에서 제거하지만 여전히 활성화되어 (0) | 2020.02.24 |