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 相关文章推荐
apache2.2.4+mysql5.0.77+php5.2.8安装精简
Apr 29 PHP
一个基于PDO的数据库操作类
Mar 24 PHP
php中DOMElement操作xml文档实例演示
Mar 26 PHP
php+ajax实现文章自动保存的方法
Dec 30 PHP
php中数据库连接方式pdo和mysqli对比分析
Feb 25 PHP
php去除字符串中空字符的常用方法小结
Mar 17 PHP
php通过array_shift()函数移除数组第一个元素的方法
Mar 18 PHP
php基本函数汇总
Jul 09 PHP
php+MySql实现登录系统与输出浏览者信息功能
Jul 01 PHP
PHP串行化与反串行化实例分析
Dec 27 PHP
php下载远程大文件(获取远程文件大小)的实例
Jun 17 PHP
PHP SFTP实现上传下载功能
Jul 26 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
php和javascript之间变量的传递实现代码
2012/12/19 PHP
php Hex RGB颜色值互换的使用
2013/05/10 PHP
php中函数前加&amp;符号的作用分解
2014/07/08 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
Prototype中dom对象方法汇总
2008/09/17 Javascript
jquery引用方法时传递参数原理分析
2014/10/13 Javascript
node.js中的fs.chmod方法使用说明
2014/12/18 Javascript
javascript通过元素id和name直接取得元素的方法
2015/04/28 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016/03/13 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
微信小程序 基础组件与导航组件详细介绍
2017/02/21 Javascript
jQuery中each方法的使用详解
2018/03/18 jQuery
Vue组件教程之Toast(Vue.extend 方式)详解
2019/01/27 Javascript
详解VUE调用本地json的使用方法
2019/05/15 Javascript
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
2019/09/23 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
2020/11/03 Javascript
python中使用enumerate函数遍历元素实例
2014/06/16 Python
Python中的包和模块实例
2014/11/22 Python
Python映射拆分操作符用法实例
2015/05/19 Python
python爱心表白 每天都是浪漫七夕!
2018/08/18 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
Python xlwt模块使用代码实例
2020/06/10 Python
pytorch 限制GPU使用效率详解(计算效率)
2020/06/27 Python
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
英国最大的独立摄影零售商:Park Cameras
2019/11/27 全球购物
财务助理岗位职责
2013/11/10 职场文书
生物制药自我鉴定
2014/01/25 职场文书
迟到检讨书500字
2014/02/05 职场文书
大学生个人实习的自我评价
2014/02/15 职场文书
《她是我的朋友》教学反思
2014/04/26 职场文书
2014年大学生工作总结
2014/11/20 职场文书
2014年销售经理工作总结
2014/12/01 职场文书
单位考核聘任报告
2015/03/02 职场文书
教师研修随笔感言
2015/11/18 职场文书
Nginx反爬虫策略,防止UA抓取网站
2021/03/31 Servers
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP