Экспорт большого файла XLS в Heroku - PullRequest
1 голос
/ 30 января 2012

Я пытаюсь экспортировать около 300 тыс. Записей в XLS, используя DelayedJob в heroku с гемом электронной таблицы (http://spreadsheet.rubyforge.org/). К сожалению, мне нужно перебирать все записи, поскольку некоторые поля извлекаются из других связанных таблиц.

Экспорт в CSV работает нормально (хотя это занимает много времени), и можно было бы записывать каждую запись в S3 напрямую, как я их просматриваю.

Проблема в том, что при использовании гема электронных таблицЯ не могу эффективно экспортировать отчет XLS из этих записей, потому что процесс будет очень быстро потреблять много памяти.

Итак, вопрос:

Как бы вы экспортировалимного данных из базы данных в файл XLS, который будет размещен на S3, учитывая, что 1. вы не можете записывать в файловую систему на heroku и 2. вам не следует превышать квоту памяти 512 МБ?

1 Ответ

1 голос
/ 30 января 2012

На кедре вы можете писать в файловую систему, хотя она все еще эфемерна и будет уходить не реже одного раза в день, а также при нажатии, перезапуске кода и т. Д.

Янезнакомый с конкретным камнем, о котором вы упомянули, однако лучшим подходом было бы работать в пакетах записей, чтобы сборщик мусора мог освобождать вещи по ходу работы.

Если вы можете найти какой-нибудь лучший, настраиваемый sql, postgres может выполнять работу по извлечению полей из связанных таблиц.

Кроме того, вам следует изучить курсоры, чтобы избежать загрузки всего набора данных: http://www.postgresql.org/docs/8.3/static/plpgsql-cursors.html

...