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

不負(fù)相思意
TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊
您可以通過(guò)按塊進(jìn)行計(jì)算來(lái)減少使用的內(nèi)存。使用 SQL,您可以循環(huán)多個(gè)請(qǐng)求,每個(gè)請(qǐng)求僅包含特定數(shù)量的行。
FETCH
對(duì)于 Oracle,這可以通過(guò)和來(lái)完成OFFSET
。
- 1 回答
- 0 關(guān)注
- 159 瀏覽
添加回答
舉報(bào)
0/150
提交
取消