我多年來一直面臨著一個問題。我有一個包含 500 000 行的大型數據集,我想將它們打印到 CSV 中。在第一種情況下,我需要根據行上的列進行計算以確定“結果”列。我已經找到了解決方案。我正在使用“fetch”并逐行進行計算并逐漸打印到我的csv簡化示例:|---------------------------------------|| ID | type | var1 | var2 | var1 * var2 ||---------------------------------------|| 0 | car | 2 | 5 | 10 || 1 | moto | 4 | 8 | 32 || 2 | car | 0 | 2 | 2 ||---------------------------------------|在第二種情況下,我需要從 500k 行中打印涉及這 500k 行中大量行的計算(最多可以是 10k+ 行的組)。簡化示例:|-----------------------------|| type | sum var1 * var2 ||-----------------------------|| car | 87677670 || moto | 3232435 ||-----------------------------|但是,計算比乘法之和要復雜得多。翻譯:它們不能直接用 SQL 完成。我的問題是,如果我將所有汽車從數據庫轉移到我的 php 應用程序中進行循環,我的 php memory_limit 將達到。我怎樣才能像第一個例子一樣逐漸做到這一點?不是:我使用的是 Oracle 12c 和 PHP 5.3.5
1 回答

不負相思意
TA貢獻1777條經驗 獲得超10個贊
您可以通過按塊進行計算來減少使用的內存。使用 SQL,您可以循環多個請求,每個請求僅包含特定數量的行。
FETCH
對于 Oracle,這可以通過和來完成OFFSET
。
- 1 回答
- 0 關注
- 146 瀏覽
添加回答
舉報
0/150
提交
取消