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中使用反射技术的架构插件使用说明
May 18 PHP
深入解析php中的foreach函数
Aug 31 PHP
使用PHP强制下载PDF文件示例
Jan 17 PHP
php递归删除目录下的文件但保留的实例分享
May 10 PHP
thinkphp分页集成实例
Jul 24 PHP
PHP封装的XML简单操作类完整实例
Nov 13 PHP
PHP封装的page分页类定义与用法完整示例
Dec 24 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
May 23 PHP
PHP利用DWZ.CN服务生成短网址
Aug 11 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
Oct 09 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
Jul 10 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
VML绘图板②脚本--VMLgraph.js、XMLtool.js
2006/10/09 PHP
利用php来自动调用不同服务器上的flash
2006/10/09 PHP
php设计模式 Prototype (原型模式)代码
2011/06/26 PHP
PHP解决URL中文GBK乱码问题的两种方法
2014/06/03 PHP
Yii框架中memcache用法实例
2014/12/03 PHP
学习php开源项目的源码指南
2014/12/21 PHP
jquery高效反选具体实现
2013/05/05 Javascript
JS特殊函数(Function()构造函数、函数直接量)区别介绍
2013/05/19 Javascript
javascript中SetInterval与setTimeout的定时器用法
2015/08/24 Javascript
JS使用eval解析JSON的注意事项分析
2015/11/14 Javascript
JavaScript判断是否是微信浏览器
2016/06/13 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
微信小程序 绘图之饼图实现
2016/10/24 Javascript
javascript入门之数组[新手必看]
2016/11/21 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
MUI  Scroll插件的使用详解
2017/04/13 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
将 vue 生成的 js 上传到七牛的实例
2017/07/28 Javascript
[01:02:18]VGJ.S vs infamous Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python ElementTree 基本读操作示例
2009/04/09 Python
python的三目运算符和not in运算符使用示例
2014/03/03 Python
Python写的Socks5协议代理服务器
2014/08/06 Python
Python实现一个简单的MySQL类
2015/01/07 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
2018/12/02 Python
django实现类似触发器的功能
2019/11/15 Python
浅析HTML5:'data-'属性的作用
2018/01/23 HTML / CSS
医药工作者的求职信范文
2013/09/21 职场文书
道路施工安全责任书
2014/07/24 职场文书
最美乡村教师观后感
2015/06/11 职场文书
2015年国庆节新闻稿
2015/07/18 职场文书
《我的长生果》教学反思
2016/02/20 职场文书
《夸父追日》教学反思
2016/02/20 职场文书
年终工作总结范文
2019/06/20 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书
MySql存储过程之逻辑判断和条件控制
2021/05/26 MySQL