如何从大数据文件中取出符合条件的数据

【问题】

I how to make PHP script for large data scraping

【回答】

用 php 读取并计算大文件,需要用函数 fseek 设置文件指针,用 fread 函数每次将一段数据读入内存,然后循环处理。读取的过程还不算复杂,但计算的步骤就很难写了,比如:多条件查询、汇总分组、动态条件。 对于大文件,往往还需要用多线程并行计算来提高性能,代码会更难实现。

这种情况下可以试试 SPL 来实现,其相较于 php 代码更加简洁,效率也不错。比如:从大文件 emplyee.txt 中查询出 1981 年 1 月 1 日(含)之后出生的女员工,代码如下:

A
1=file("D:/employee.txt").cursor@t()
2=A1.select(BIRTHDAY>=date(1981,1,1) && GENDER=="F")
3=A2.fetch()

如果条件是不定的,可以将 A2 的代码改为:A1.select(${where}),这样就可以将查询条件写在参数里,实现动态查询。

如果查询结果较多,内存放不下,还可以将 A3 改为:file(“D:/result.txt”).export(A2),这可以将计算结果直接输出到文件中。

如果想提高性能,还可以使用多线程并行查询,具体内容可以参考集算器教程并行计算小节

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值