2012-01-29 13 views
1

私はスクロールシートの宝石(http://spreadsheet.rubyforge.org/)でherokuのDelayedJobを使って約300kのレコードをXLSにエクスポートしようとしています。残念ながら、一部のフィールドは他の関連テーブルから抽出されるため、すべてのレコードを繰り返し処理する必要があります。ヘロクで大きなXLSファイルをエクスポート

CSVへのエクスポートはうまくいきますが(時間がかかりますが)、各レコードをS3に直接書き込むことができます。

問題は、スプレッドシートの宝石を使用しているため、これらのレコードのXLSレポートを効率的にエクスポートできないように見えることです。

そこで質問です:

どのようにあなたはHerokuのと2上のファイルシステムに書き込むことができない1.ことを考慮すると、S3上でホストされるXLSファイルにデータベースから大量のデータをエクスポートします。 512MBのメモリクォータを超えるべきではありませんか?杉上

+1

XLSあなたはおそらくCSVに固執したいとしているので、とにかく枚あたり65000レコードの制限があります。 – pguardiario

答えて

1

あなたはなど、それはまだ短命であり、少なくとも一日一回離れて行くでしょうが、ファイルシステムへの書き込み、およびコードにプッシュし、restartes

私は特定の宝石に慣れていない午前ことができますあなたが言いますが、最良の方法は、レコードのバッチで作業することです。ガベージコレクタは、あなたが行ったときに自由に使えるようにします。

あなたがカスタムSQLをよりよく理解できれば、Postgresは関連するテーブルのフィールドをプルする作業を行うことができます。

また、あなたは、データセット全体を読み込む避けるために、カーソルになります。http://www.postgresql.org/docs/8.3/static/plpgsql-cursors.html

関連する問題