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 str_replace的替换漏洞
Mar 15 PHP
PHP乱码问题,UTF-8乱码常见问题小结
Apr 09 PHP
php FLEA中二叉树数组的遍历输出
Sep 26 PHP
php实现上传图片生成缩略图示例
Apr 13 PHP
php实现过滤UBB代码的类
Mar 12 PHP
php生成gif动画的方法
Nov 05 PHP
yii实现使用CUploadedFile上传文件的方法
Dec 28 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
safari下载文件自动加了html后缀问题
Nov 09 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
Feb 16 PHP
PHP析构函数destruct与垃圾回收机制的讲解
Mar 22 PHP
PHP简单验证码功能机制实例详解
Mar 27 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中文件读、写、删的操作(PHP中对文件和目录操作)
2012/03/06 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
2015/12/02 PHP
PHP性能优化大全(php.ini)
2016/05/20 PHP
jQuery 表格工具集
2010/04/25 Javascript
一些实用的jQuery代码片段收集
2011/07/12 Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
2016/06/06 Javascript
JS常见算法详解
2017/02/28 Javascript
javascript实现动态显示颜色块的报表效果
2017/04/10 Javascript
基于JavaScript实现百度搜索框效果
2020/06/28 Javascript
手把手教你使用vue-cli脚手架(图文解析)
2017/11/08 Javascript
vue2.0 移动端实现下拉刷新和上拉加载更多的示例
2018/04/23 Javascript
jQuery动态生成的元素绑定事件操作实例分析
2019/05/04 jQuery
微信提示 在浏览器打开 效果实现过程解析
2019/09/10 Javascript
深入学习Vue nextTick的用法及原理
2019/10/08 Javascript
Python模块学习 datetime介绍
2012/08/27 Python
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
Python配置mysql的教程(推荐)
2017/10/13 Python
python matplotlib中文显示参数设置解析
2017/12/15 Python
用python实现k近邻算法的示例代码
2018/09/06 Python
Pytorch之view及view_as使用详解
2019/12/31 Python
Python如何读取文件中图片格式
2020/01/13 Python
Python常用断言函数实例汇总
2020/11/30 Python
用python制作个视频下载器
2021/02/01 Python
用pip给python安装matplotlib库的详细教程
2021/02/24 Python
基于html5 canvas做批改作业的小插件
2020/05/20 HTML / CSS
乌克兰第一的珠宝网上商店:Gold.ua
2019/11/29 全球购物
西班牙鞋子和箱包在线销售网站:zapatos.es
2020/02/17 全球购物
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
《美丽的公鸡》教学反思
2014/02/25 职场文书
天猫某品牌专卖店运营计划书
2014/03/21 职场文书
法人代表授权委托书
2014/04/08 职场文书
大学生思想道德自我评价
2015/03/09 职场文书
第一书记观后感
2015/06/08 职场文书
篮球赛闭幕式主持词
2015/07/03 职场文书
情况说明书格式及范文
2019/06/24 职场文书
Win11安全功能升级:内置防网络钓鱼功能
2022/04/08 数码科技