为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 从 50 万以上的 SQL 行生成 CSV

PHP 从 50 万以上的 SQL 行生成 CSV

PHP
catspeake 2023-11-03 17:33:12
我多年来一直面临着一个问题。我有一个包含 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

查看完整回答
反对 回复 2023-11-03
  • 1 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信