PHP按行读取、处理较大CSV文件的代码实例


Posted in PHP onApril 09, 2014

对于数百万条数据量的CSV文件,文件大小可能达到数百M,如果简单读取的话很可能出现超时或者卡死的现象。

为了成功将CSV文件里的数据导入数据库,分批处理是非常必要的。

下面这个函数是读取CSV文件中指定的某几行数据:

/**
 * csv_get_lines 读取CSV文件中的某几行数据
 * @param $csvfile csv文件路径
 * @param $lines 读取行数
 * @param $offset 起始行数
 * @return array
 * */
function csv_get_lines($csvfile, $lines, $offset = 0) {
    if(!$fp = fopen($csvfile, 'r')) {
     return false;
    }
    $i = $j = 0;
 while (false !== ($line = fgets($fp))) {
  if($i++ < $offset) {
   continue; 
  }
  break;
 }
 $data = array();
 while(($j++ < $lines) && !feof($fp)) {
  $data[] = fgetcsv($fp);
 }
 fclose($fp);
    return $data;
}

调用方法:
$data = csv_get_lines('path/bigfile.csv', 10, 2000000);
print_r($data);

函数主要采用行定位的思路,通过跳过起始行数来实现文件指针定位。

上述函数对500M以内的文件进行过测试,运行通畅,对于更大的文件未做测试,请斟酌使用或加以改进。

PHP 相关文章推荐
PHP中全面阻止SQL注入式攻击分析小结
Jan 30 PHP
php 批量生成html,txt文件的实现代码
Jun 26 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
Jul 02 PHP
php 判断网页是否是utf8编码的方法
Jun 06 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
Mar 12 PHP
thinkphp3.x中display方法及show方法的用法实例
May 19 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
Jul 04 PHP
php-msf源码详解
Dec 25 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
May 20 PHP
PHP中非常有用却鲜有人知的函数集锦
Aug 17 PHP
PHP 构造函数和析构函数原理与用法分析
Apr 21 PHP
PHP 出现 http500 错误的解决方法
Mar 09 PHP
PHP二维数组排序的3种方法和自定义函数分享
Apr 09 #PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
Apr 09 #PHP
PHP扩展模块Pecl、Pear以及Perl的区别
Apr 09 #PHP
排序算法之PHP版快速排序、冒泡排序
Apr 09 #PHP
PHP读取大文件的类SplFileObject使用介绍
Apr 09 #PHP
php解决约瑟夫环示例
Apr 09 #PHP
适用于抽奖程序、随机广告的PHP概率算法实例
Apr 09 #PHP
You might like
解析CI的AJAX分页 另类实现方法
2013/06/27 PHP
Yii的CDbCriteria查询条件用法实例
2014/12/04 PHP
PHP callback函数使用方法和注意事项
2015/01/23 PHP
Ajax+Jpgraph实现的动态折线图功能示例
2019/02/11 PHP
TP3.2.3框架文件上传操作实例详解
2020/01/23 PHP
jQuery源码分析-01总体架构分析
2011/11/14 Javascript
js模仿jquery的写法示例代码
2013/06/16 Javascript
js去空格技巧分别去字符串前后、左右空格
2013/10/21 Javascript
js导出txt示例代码
2014/01/14 Javascript
window.open 以post方式传递参数示例代码
2014/02/27 Javascript
Extjs表单常见验证小结
2014/03/07 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
带有定位当前位置的百度地图前端web api实例代码
2016/06/21 Javascript
AngularJS入门教程之控制器详解
2016/07/27 Javascript
JS实现探测网站链接的方法【测试可用】
2016/11/08 Javascript
jQuery用FormData实现文件上传的方法
2016/11/21 Javascript
element ui 表格动态列显示空白bug 修复方法
2018/09/04 Javascript
JS实现简单的点赞与踩功能示例
2018/12/05 Javascript
Vue加载json文件的方法简单示例
2019/01/28 Javascript
vue写h5页面的方法总结
2019/02/12 Javascript
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
python检查指定文件是否存在的方法
2015/07/06 Python
浅析Python中的for 循环
2016/06/09 Python
python中元组的用法整理
2020/06/15 Python
Pytorch实现将模型的所有参数的梯度清0
2020/06/24 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
2020/10/15 Python
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
期末自我鉴定
2014/02/02 职场文书
销售经理岗位职责
2014/03/16 职场文书
处级干部反四风个人对照检查材料思想汇报
2014/09/27 职场文书
免职证明样本
2014/10/23 职场文书
有限公司股东合作协议书
2014/10/29 职场文书
《伯牙绝弦》教学反思
2016/02/16 职场文书
Python字符串格式化方式
2022/04/07 Python
Win11无法访问设备和打印机 如何解决页面空白
2022/04/09 数码科技