※ ChatGPTを利用し、要約された質問です(原文:大容量CSVの生成・ダウンロード)
大容量CSVの生成・ダウンロード
このQ&Aのポイント
postgreSQLから大容量のデータを抜き取り、CSVファイルとしてダウンロードする方法について悩んでいます。
現在の方法では動作が重く、処理に不安があります。データを作成→ダウンロードする場合には別の手法を検討すべきか悩んでいます。
サーバ上に一時ファイルとして作成してからダウンロードするなど、より効率的な方法があるのかどうか教えてください。
いつもお世話になります。
postgreSqlから5万行前後データを抜き取り、CSVファイル(10M余りになります)としてダウンロード という操作をしています。
タイムアウトの時間を長くしたりして、現状、何とか動いておりますが、動作が重いのもあり、自分の処理に不安があります。
現状、
1)Header("~ の送信
2)CSVのタイトルをecho
3)SQLの実行
4)pg_numrows に対して、for文でループを回し、pg_resultで各行の値を取得。
一行ずつechoで吐き出し
という方法を取っております。
入門書や、Webなどでも見る方法なので、間違いではないのでしょうが、ある程度の容量のデータを作成→ダウンロードの場合も、変わらずこのような方法を用いて良いのかで悩んでいます。
サーバ上に一次ファイルとして作成してしまい、それをタウンロードする・・・など、別の手法を取った方が良いのでしょうか?
どなたかご教示いただけると助かります。
よろしくお願いいたします。
お礼
ありがとうございます。 その方法だと、一回あたりのダウンロードが小分けになり、良いですね。 ただ、リアルタイムに更新されるデータなので、CSVを分割する方法でも分割された最初のパッケージと、最後のパッケージの時差があっては望ましくないですので、データの生成は一気にやってしまわなければならない・・・ですので(汗)新たなボトルネックが発生しそうな・・・ なかなか難しいです・・・