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 相关文章推荐
dede3.1分页文字采集过滤规则详说(图文教程)
Apr 03 PHP
PHP 可阅读随机字符串代码
May 26 PHP
CURL的学习和应用(附多线程实现)
Jun 03 PHP
CI框架开发新浪微博登录接口源码完整版
May 28 PHP
PHP计算百度地图两个GPS坐标之间距离的方法
Jan 09 PHP
最准确的php截取字符串长度函数
Oct 29 PHP
smarty高级特性之过滤器的使用方法
Dec 25 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
May 13 PHP
php PDO实现的事务回滚示例
Mar 23 PHP
浅谈Yii乐观锁的使用及原理
Jul 25 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
Aug 14 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
Jan 23 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
星际争霸 Starcraft 编年史
2020/03/14 星际争霸
PHP常用技巧总结(附函数代码)
2012/02/04 PHP
php旋转图片90度的方法
2013/11/07 PHP
JavaScript中的null和undefined解析
2012/04/14 Javascript
jqTransform form表单美化插件使用方法
2012/07/05 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
jCallout 轻松实现气泡提示功能
2013/09/22 Javascript
jQuery实现的仿select功能代码
2015/08/19 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
JavaScript实现简单的日历效果
2016/09/25 Javascript
vue.js实现含搜索的多种复选框(附源码)
2017/03/23 Javascript
jquery append与appendTo方法比较
2017/05/24 jQuery
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
2018/02/08 Javascript
通过js给网页加上水印背景实例
2019/06/17 Javascript
vue实现购物车的监听
2020/04/20 Javascript
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
Python中常见的数据类型小结
2015/08/29 Python
Python数据拟合与广义线性回归算法学习
2017/12/22 Python
python学生管理系统代码实现
2020/04/05 Python
python模拟键盘输入 切换键盘布局过程解析
2019/08/15 Python
pytorch 预训练层的使用方法
2019/08/20 Python
pytorch中的transforms模块实例详解
2019/12/31 Python
详解python UDP 编程
2020/08/24 Python
CSS3 3D旋转rotate效果实例介绍
2016/05/03 HTML / CSS
CSS3实现曲线阴影和翘边阴影
2016/05/03 HTML / CSS
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
2017/09/15 HTML / CSS
宝拉珍选官方旗舰店:2%水杨酸精华液,收缩毛孔粗大和祛痘
2018/07/01 全球购物
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
饮料业务员岗位职责
2013/12/15 职场文书
教师评优事迹材料
2014/01/10 职场文书
学习雷锋精神心得体会范文
2014/03/12 职场文书
报关报检委托书
2014/04/08 职场文书
2019财务转正述职报告
2019/06/27 职场文书
python 遍历磁盘目录的三种方法
2021/04/02 Python
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis