OpenPyxl を使用して MySQL コンテンツを Microsoft Excel に XSLX 形式でエクスポートしています
https://bitbucket.org/ericgazoni/openpyxl/overview
しかし、私たちが扱うデータ量は膨大です。メモリ不足の状況に陥っています。テーブルには、50000 行以上で最大 400 列を含めることができます。ファイルが大きくても、Microsoft Excel や OpenOffice で問題が発生するほど大きくはありません。私たちの問題は主に、Python が XML DOM 構造を十分に効率的にメモリに保持しないという事実に起因していると想定しています。
編集: OpenPyxl の作成者である Eric は、OpenPyxl に固定メモリ使用量で書き込むオプションがあることを指摘しました。ただし、これで問題が完全に解決されたわけではありません。Python では、生の速度や他の何かがメモリを大量に消費するという問題がまだ残っているからです。
現在、Excel ファイルを作成するためのより効率的な方法を探しています。できれば Python を使用しますが、適切な解決策が見つからない場合は、他のプログラミング言語も検討する必要があります。
特定の順序ではなく、オプションには以下が含まれます。
1) OpenOffice と PyUno を使用し、それらのメモリ構造が OpenPyxl よりも効率的であり、TCP/IP 呼び出しブリッジが十分に効率的であることを願っています
2) Openpyxl は xml.etree を使用します。Python lxml (libxml2 ネイティブ拡張) は、XML メモリ構造を使用してより効率的になりますか? (明らかな利点がある場合は、後で変更を Openpyxl に戻すことができます)
3) MySQL から CSV にエクスポートし、Python とファイル反復を使用して、CSV ファイルを直接 XSLX に後処理します。
4) 他のプログラミング言語とライブラリを使用する (Java)
ポインター:
http://dev.lethain.com/handling-very-large-csv-and-xml-files-in-python/
http://enginoz.wordpress.com/2010/03/31/writing-xlsx-with-java/