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 相关文章推荐
图象函数中的中文显示
Oct 09 PHP
php xml 入门学习资料
Jan 01 PHP
PHP 数据结构 算法 三元组 Triplet
Jul 02 PHP
php生成EAN_13标准条形码实例
Nov 13 PHP
Server.HTMLEncode让代码在页面里显示为源代码
Dec 08 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
Jun 12 PHP
用PHP代码在网页上生成图片
Jul 01 PHP
php多线程实现方法及用法实例详解
Oct 26 PHP
浅析Yii2缓存的使用
May 10 PHP
php如何执行非缓冲查询API
Jul 22 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
Jun 09 PHP
使用Git实现Laravel项目的自动化部署
Nov 24 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
人族 Terran 基本策略
2020/03/14 星际争霸
10条PHP编程习惯助你找工作
2008/09/29 PHP
收藏的PHP常用函数 推荐收藏保存
2010/02/21 PHP
php中使用Curl、socket、file_get_contents三种方法POST提交数据
2011/08/12 PHP
PHP输入流php://input介绍
2012/09/18 PHP
smarty模板引擎之配置文件数据和保留数据
2015/03/30 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
2016/12/05 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
Laravel框架下的Contracts契约详解
2020/03/17 PHP
兼容Mozilla必须知道的知识。
2007/01/09 Javascript
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
URL地址中的#符号使用说明
2011/02/12 Javascript
读jQuery之九 一些瑕疵说明
2011/06/21 Javascript
js两行代码按指定格式输出日期时间
2011/10/21 Javascript
Javascript弹出窗口的各种方法总结
2013/11/11 Javascript
Jquery下EasyUI组件中的DataGrid结果集清空方法
2014/01/06 Javascript
Vue.js常用指令的使用小结
2017/06/23 Javascript
nodejs调取微信收货地址的方法
2017/12/20 NodeJs
webpack-dev-server自动更新页面方法
2018/02/22 Javascript
浅谈node.js 命令行工具(cli)
2018/05/10 Javascript
vue计算属性computed的使用方法示例
2019/03/13 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
2019/04/28 Javascript
关于vue 项目中浏览器跨域的配置问题
2020/11/10 Javascript
[00:44]华丽开场!DOTA2勇士令状带来全新对阵画面
2019/05/15 DOTA
[45:34]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.18
2020/12/19 DOTA
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
Python json格式化打印实现过程解析
2020/07/21 Python
python 30行代码实现蚂蚁森林自动偷能量
2021/02/08 Python
可口可乐唇膏:Lip Smackers
2019/08/27 全球购物
工程预算与管理应届生求职信
2013/10/06 职场文书
大一学生职业生涯规划
2014/03/11 职场文书
合作协议书
2014/04/23 职场文书
酒店优秀员工事迹材料
2014/06/02 职场文书
python实现简单的井字棋
2021/05/26 Python
关于的python五子棋的算法
2022/05/02 Python