PHP读取CSV大文件导入数据库的实例


Posted in PHP onJuly 24, 2017

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读取CSV大文件导入数据库的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
Mar 07 PHP
浅谈php函数serialize()与unserialize()的使用方法
Aug 19 PHP
php去除字符串中空字符的常用方法小结
Mar 17 PHP
PHP扩展Memcache分布式部署方案
Dec 06 PHP
深入解析PHP的Yii框架中的缓存功能
Mar 29 PHP
PHP编写文件多服务器同步程序
Jul 02 PHP
PHP 实现页面静态化的几种方法
Jul 23 PHP
mongodb和php的用法详解
Mar 25 PHP
Yii框架通过请求组件处理get,post请求的方法分析
Sep 03 PHP
Laravel框架处理用户的请求操作详解
Dec 20 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
Jan 22 PHP
PHP实现页面静态化深入讲解
Mar 04 PHP
Yii2.0多文件上传实例说明
Jul 24 #PHP
thinkphp分页集成实例
Jul 24 #PHP
PHP 实现页面静态化的几种方法
Jul 23 #PHP
PHP魔术方法之__call与__callStatic使用方法
Jul 23 #PHP
php魔法函数与魔法常量使用介绍
Jul 23 #PHP
php curl上传、下载、https登陆实现代码
Jul 23 #PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 #PHP
You might like
PHP 日,周,月点击排行统计
2012/01/11 PHP
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
2016/02/01 PHP
JQuery获取当前屏幕的高度宽度的实现代码
2011/07/12 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
2012/08/14 Javascript
jQuery实现平滑滚动到指定锚点的方法
2015/03/20 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
浅谈js中字符和数组一些基本算法题
2016/08/15 Javascript
javascript函数中的3个高级技巧
2016/09/22 Javascript
jQuery简介_动力节点Java学院整理
2017/07/04 jQuery
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
9种改善AngularJS性能的方法
2017/11/28 Javascript
Vue实现底部侧边工具栏的实例代码
2018/09/03 Javascript
vue图片上传本地预览组件使用详解
2019/02/20 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
vue中的 $slot 获取插槽的节点实例
2019/11/12 Javascript
vue不操作dom实现图片轮播的示例代码
2019/12/18 Javascript
[46:48]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第三局
2016/02/25 DOTA
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
python写的ARP攻击代码实例
2014/06/04 Python
Python实现全角半角转换的方法
2014/08/18 Python
浅谈python字符串方法的简单使用
2016/07/18 Python
windows及linux环境下永久修改pip镜像源的方法
2016/11/28 Python
Python实现简易Web爬虫详解
2018/01/03 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
Django实现简单网页弹出警告代码
2019/11/15 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
2020/03/19 Python
python中get和post有什么区别
2020/06/19 Python
详解如何在css3打包后自动追加前缀插件:autoprefixer
2018/12/18 HTML / CSS
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
道德大讲堂实施方案
2014/05/14 职场文书
关于感恩的演讲稿500字
2014/08/26 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
CSS 伪元素::marker详解
2021/06/26 HTML / CSS
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫