2013-11-13 3 views
0

У меня есть большой CSV-файл с большим количеством данных более 75000 записей. Мне нужно вставить его в базу данных mysql из моего приложения rails. Использование фоновой обработки с использованием Sidekiq (https://github.com/mperham/sidekiq) также занимает много времени. Любой лучший способ обработки данных?Обработка большого файла csv

Благодаря

+0

Это является «загрузка данных» вопрос MySQL, не Rails. Попробуйте: http://dev.mysql.com/doc/refman/5.5/en/load-data.html – Phlip

+0

, если вам нужно прочитать в файл, затем обработать что-то на данных, а затем сохранить эти данные в базу данных должен попытаться оптимизировать ваш код, я не думаю, что это ошибка sidekiq, sidekiq запускает ваш код, вы можете попробовать delayed_job или resque, но я думаю, что проблема заключается в вашем алгоритме обработки (т. е. попытайтесь оптимизировать проверки, сначала проверьте поля, которые будет быстрее, не просто запустить «valid?» на модели, если какие-либо быстрые проверки не позволяют просто пропустить эту запись) – arieljuod

ответ

1

Вы можете сделать это прямо на MySQL без использования рельсов. Это будет намного быстрее. Посмотрите на эту SO question для получения дополнительной информации

0

Использование MySql Функция:

LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name 
FIELDS TERMINATED BY ',' ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n' 
IGNORE 1 LINES; 
Смежные вопросы