2014-03-27 3 views
0

rake 작업을 통해 CSV 파일 가져 오기 작업을하고 있습니다 (다른 날에 here).레일 레이크 작업 CSV 가져 오기가 느립니다.

namespace :csvimport do 

    desc "Import Products CSV Data." 
    task :products => :environment do 

    ActiveRecord::Migration.drop_table products 

    require 'csv' 
    csv_file_path = '/home/jay/workspace/db/import_tables/products.csv' 
    CSV.foreach(csv_file_path) do |row| 
     p = Product.create!({ 
      :product_id => row[0], 
      :product_name => row[1], 
     } 
    ) 
    end 
    end 
end 

작은 파일 크기 (예 : 10000 개의 행)에 유용합니다. 그러나 내가 백만 이상의 큰 파일을 가지고 시험해 볼 때 그것은 매우 오랜 시간이 걸린다. 나는 또한 과정이 일어나고 있다는 어떠한 피드백도 얻지 못하고있다. pgAdmin3에 들어가서 SQL SELECT count(*) FROM sales;을 사용하면 초당 10 또는 20 행을 볼 수 있습니다.

아무에게도 더 좋은 방법이 있습니까? 필자는 매우 빠른 (몇 분) pgAdmin SQL을 통해 직접 데이터를 가져올 수 있지만 프로덕션 환경으로 이동하면 관리 인터페이스를 통해이를 수행 할 수 있도록 솔루션을 구축하려고합니다.

이렇게 말하면서, 제작에 들어가면 이전 시스템 중 하나에서 레일로 가져올 때 새로운 데이터 만 가져 오려고합니다.

또한 기존 레이크 작업을 어떻게 죽일 수 있습니까? 더 나은 방법은 터미널에서 'x'를 그냥.

+0

ok ... 표준 'ctrl + c'는 레이크 작업을 중단합니다 –

+1

정말'Product.create! '가 필요합니까? CSV를 데이터베이스에 곧바로 전송하고 ActiveRecord를 우회 할 수 있다면 훨씬 더 빠르게 진행될 것입니다. –

답변

관련 문제