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 相关文章推荐
使用bcompiler对PHP文件进行加密的代码
Aug 29 PHP
php防止SQL注入详解及防范
Nov 12 PHP
一个完整的PHP类包含的七种语法说明
Jun 04 PHP
PHP读取PPT文件的方法
Dec 10 PHP
微信自定义分享php代码分析
Nov 24 PHP
PHP实现网站访问量计数器
Oct 27 PHP
浅谈PHP中如何实现Hook机制
Nov 14 PHP
PHP使用两个栈实现队列功能的方法
Jan 15 PHP
PHP实现数据库的增删查改功能及完整代码
Apr 18 PHP
safari下载文件自动加了html后缀问题
Nov 09 PHP
Laravel配置全局公共函数的方法步骤
May 09 PHP
php 使用 __call实现重载功能示例
Nov 18 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 字符串操作入门教程
2006/12/06 PHP
PHP fgetcsv 定义和用法(附windows与linux下兼容问题)
2012/05/29 PHP
destoon实现资讯信息前面调用它所属分类的方法
2014/07/15 PHP
PHP实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
php实现搜索一维数组元素并删除二维数组对应元素的方法
2015/07/06 PHP
为你的网站增加亮点的9款jQuery插件推荐
2011/05/03 Javascript
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
js字符编码函数区别分析
2011/12/28 Javascript
js编码之encodeURIComponent使用介绍(asp,php)
2012/03/01 Javascript
禁止IE用右键的JS代码
2013/12/30 Javascript
javascript内置对象arguments详解
2014/03/16 Javascript
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
jquery实现的动态回到顶部特效代码
2015/10/28 Javascript
jquery对象与DOM对象转化
2017/02/08 Javascript
有关JS中的0,null,undefined,[],{},'''''''',false之间的关系
2017/02/14 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
2017/08/16 Javascript
Three.js基础学习教程
2017/11/16 Javascript
webpack配置打包后图片路径出错的解决
2018/04/26 Javascript
详解JavaScript中的数组合并方法和对象合并方法
2018/05/11 Javascript
用node.js写一个jenkins发版脚本
2019/05/21 Javascript
python中引用与复制用法实例分析
2015/06/04 Python
浅析python中SQLAlchemy排序的一个坑
2017/02/24 Python
对numpy中向量式三目运算符详解
2018/10/31 Python
PyQt QListWidget修改列表项item的行高方法
2019/06/20 Python
Python 一键获取百度网盘提取码的方法
2019/08/01 Python
通过 Python 和 OpenCV 实现目标数量监控
2020/01/05 Python
python实现扫雷游戏
2020/03/03 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
使用HTML5拍照示例代码
2013/08/06 HTML / CSS
举例说明类变量和实例变量的区别
2016/06/30 面试题
公司合作协议书范本
2014/04/18 职场文书
未中标通知书
2015/04/17 职场文书
教师节作文之小学四年级
2019/09/03 职场文书
python实现自动化群控的步骤
2021/04/11 Python
MySQL Router的安装部署
2021/04/24 MySQL
Java 数组内置函数toArray详解
2021/06/28 Java/Android