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'를 그냥.
ok ... 표준 'ctrl + c'는 레이크 작업을 중단합니다 –
정말'Product.create! '가 필요합니까? CSV를 데이터베이스에 곧바로 전송하고 ActiveRecord를 우회 할 수 있다면 훨씬 더 빠르게 진행될 것입니다. –