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

2015-01-24信息快讯网

这篇文章主要介绍了PHP按行读取、处理较大CSV文件的代码实例,需要的朋友可以参考下

对于数百万条数据量的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使用fputcsv()函数csv文件读写数据的方法
php将csv文件导入到mysql数据库的方法
php使用fgetcsv读取csv文件出现乱码的解决方法
详解PHP导入导出CSV文件
php操作csv文件代码实例汇总
使用PHP和HTML5 FormData实现无刷新文件上传教程
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
PHP实现视频文件上传完整实例
ThinkPHP文件上传实例教程
PHP实现ftp上传文件示例
PHP中使用sleep造成mysql读取失败的案例和解决方法
PHP中读取照片exif信息的方法
php操作XML、读取数据和写入数据的实现代码
Php连接及读取和写入mysql数据库的常用代码
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
php导出csv格式数据并将数字转换成文本的思路以及代码分享
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
PHP二维数组排序的3种方法和自定义函数分享
PHP读取大文件的类SplFileObject使用介绍
PHP包含文件函数include、include_once、require、require_once区别总结
yii上传文件或图片实例
PHP把网页保存为word文件的三种方法
php断点续传之如何分割合并文件
PHP使用imagick读取PDF生成png缩略图的两种方法
php读取目录所有文件信息dir示例
PHP读取文件内容后清空文件示例代码
Drupal读取Excel并导入数据库实例
php导入csv文件碰到乱码问题的解决方法
php读取csv实现csv文件下载功能
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
php对csv文件的读取,写入,输出下载操作详解
©2014-2024 dbsqp.com