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 相关文章推荐
腾讯QQ php程序员面试题目整理
Jun 08 PHP
php 抽象类的简单应用
Sep 06 PHP
php 文件缓存函数
Oct 08 PHP
Codeigniter注册登录代码示例
Jun 12 PHP
PHP大批量插入数据库的3种方法和速度对比
Jul 08 PHP
PHP+swoole实现简单多人在线聊天群发
Jan 19 PHP
php制作的简单验证码识别代码
Jan 26 PHP
Yii2针对指定url的生成及图片等的引入方法小结
Jul 18 PHP
PHP API接口必备之输出json格式数据示例代码
Jun 27 PHP
thinkphp5框架扩展redis类方法示例
May 06 PHP
PHP判断当前使用的是什么浏览器(推荐)
Oct 27 PHP
PHP利用curl发送HTTP请求的实例代码
Jul 09 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仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
php中OR与|| AND与&amp;&amp;的区别总结
2013/10/26 PHP
php之readdir函数用法实例
2014/11/13 PHP
php读取文件内容到数组的方法
2015/03/16 PHP
php使用文本统计访问量的方法
2016/05/12 PHP
php+ajax登录跳转登录实现思路
2016/07/31 PHP
PHP解压ZIP文件到指定文件夹的方法
2016/11/17 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
2017/01/11 PHP
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
2015/03/04 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
2015/04/06 Javascript
jQuery通过Ajax返回JSON数据
2015/04/28 Javascript
jQuery插件zepto.js简单实现tab切换
2015/06/16 Javascript
jQuery平滑旋转幻灯片特效代码分享
2015/09/07 Javascript
JS实现选中当前菜单后高亮显示的导航条效果
2015/10/15 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
Jquery-data的三种用法
2017/04/18 jQuery
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
jQuery实现简单的回到顶部totop功能示例
2017/10/16 jQuery
基于JavaScript 性能优化技巧心得(分享)
2017/12/11 Javascript
jQuery滚动条美化插件nicescroll简单用法示例
2018/04/18 jQuery
JavaScript引用类型Array实例分析
2018/07/24 Javascript
微信小程序有旋转动画效果的音乐组件实例代码
2018/08/22 Javascript
ajaxfileupload.js实现上传文件功能
2019/04/19 Javascript
vue的注意规范之v-if 与 v-for 一起使用教程
2019/08/04 Javascript
Python语言描述机器学习之Logistic回归算法
2017/12/21 Python
如何使用Python自动控制windows桌面
2019/07/11 Python
django中上传图片分页三级联动效果的实现代码
2019/08/30 Python
django中related_name的用法说明
2020/05/20 Python
Zalando Lounge瑞士:时尚与生活方式购物俱乐部
2020/03/12 全球购物
庆元旦广播稿
2014/02/10 职场文书
高中生学期学习自我评价
2014/02/24 职场文书
《翻越远方的大山》教学反思
2014/04/13 职场文书
高中生操行评语
2014/04/25 职场文书
2014年精神文明工作总结
2014/12/23 职场文书
解决 Redis 秒杀超卖场景的高并发
2022/04/12 Redis