200k 레코드를 세 개의 다른 테이블에 삽입하려고합니다. CSV 파일을 구문 분석하고 이러한 레코드를 삽입하려고하면 Ruby가 전체 시스템을 잠급니다.CSV를 구문 분석하는 동안 200K 레코드를 삽입하면 시스템이 잠 깁니다.
def upload_country
@upload = Upload.new(:upload => params[:upload])
if @upload.save
csv = CSV.parse(csv_text, :headers => true)
csv.each_with_index do |row, index|
unless row["name"].blank? or row["country_code"].blank? or row["destination"].blank? or row["code"].blank?
@country = Country.new(:name => row["name"].gsub(/\s+/, " ").strip, :country_code => row["country_code"].gsub(/\s+/, " ").strip, :user_id => current_user.id, :subscriber_id => get_subscriber_id)
@country.save
if row["country_code"] == "1"
p = @[email protected]+row["code"].gsub(/\s+/, " ").strip
else
p = @country.country_code.to_s+row["code"].gsub(/\s+/, " ").strip
end
@code = DestinationCode.create(:code => p, :country_destination_id => 1, :user_id => current_user.id)
end
end
@upload.destroy
@countries = Country.find_all_by_subscriber_id(get_subscriber_id)
render :partial => '/mycarriers/carrier_country', :layout => false
end
요청을 도와 여기
이 희망 백그라운드 처리를 위해 resque으로 50 만 개 레코드를 삽입하는 나는 개인적으로 내 응용 프로그램에서 사용되는 탐구에서 당신을 도울 수있는 gem을 사용 대량 삽입을 사용하지 말아 수행하는데 오랜 시간이 걸린다. 200k 개의 오브젝트를 생성하고 삽입하는 것은 그렇게 빠르지 않을 것입니다. 대신에 일괄 적으로 삽입해야합니다. –좀 도와주세요 ??? – Kashiftufail
코드 스 니펫에서 답을 제공하십시오. – Kashiftufail