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相关资料
Oct 09 PHP
社区(php&amp;&amp;mysql)五
Oct 09 PHP
需要注意的几个PHP漏洞小结
Feb 05 PHP
php笔记之:php数组相关函数的使用
Apr 26 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
Apr 24 PHP
2个比较经典的PHP加密解密函数分享
Jul 01 PHP
PHP闭包实例解析
Sep 08 PHP
PHP对象克隆clone用法示例
Sep 28 PHP
PHP使用PDO调用mssql存储过程的方法示例
Oct 07 PHP
PHP实现的简单路由和类自动加载功能
Mar 13 PHP
PHP底层运行机制与工作原理详解
Jul 31 PHP
php实现记事本案例
Oct 20 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下尝试使用GraphicsMagick的缩略图功能
2011/01/01 PHP
深入php处理整数函数的详解
2013/06/09 PHP
php正则preg_replace_callback函数用法实例
2015/06/01 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
2015/12/09 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
2016/02/14 PHP
Apache无法自动跳转却显示目录的解决方法
2020/11/30 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
2016/09/30 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
php数组和链表的区别总结
2019/09/20 PHP
基于JQuery实现鼠标点击文本框显示隐藏提示文本
2012/02/23 Javascript
表头固定(利用jquery实现原理介绍)
2012/11/08 Javascript
关于JS管理作用域的问题
2013/04/10 Javascript
jQuery使用技巧简单汇总
2013/04/18 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
浅谈js中同名函数和同名变量的执行问题
2017/02/12 Javascript
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
微信小程序实现城市列表选择
2018/06/05 Javascript
jQuery实现消息弹出框效果
2019/12/10 jQuery
react PropTypes校验传递的值操作示例
2020/04/28 Javascript
Python 根据日志级别打印不同颜色的日志的方法示例
2019/08/08 Python
numpy ndarray 取出满足特定条件的某些行实例
2019/12/05 Python
python 普通克里金(Kriging)法的实现
2019/12/19 Python
Python openpyxl 插入折线图实例
2020/04/17 Python
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
Big Green Smile德国网上商店:提供各种天然产品
2018/05/23 全球购物
Ellesse英国官网:意大利高级运动品牌
2019/07/23 全球购物
班训口号大全
2014/06/18 职场文书
党支部对照检查材料
2014/08/25 职场文书
党的群众路线对照检查材料范文
2014/09/24 职场文书
个人剖析材料及整改措施
2014/10/07 职场文书
2014年纪检工作总结
2014/11/12 职场文书
财务经理岗位职责范本
2015/04/08 职场文书
民事上诉状范文
2015/05/22 职场文书
2019大学竞选班长发言稿
2019/06/27 职场文书
Android开发手册自定义Switch开关按钮控件
2022/06/10 Java/Android