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判断输入不超过mysql的varchar字段的长度范围
Jun 24 PHP
Windows下部署Apache+PHP+MySQL运行环境实战
Aug 31 PHP
浅析PHP中Collection 类的设计
Jun 21 PHP
php网站判断用户是否是手机访问的方法
Nov 01 PHP
php如何解决无法上传大于8M的文件问题
Mar 10 PHP
destoon实现不同会员组公司名称显示不同的颜色的方法
Aug 22 PHP
php中异常处理方法小结
Jan 09 PHP
php搜索文件程序分享
Oct 30 PHP
详解PHP的Yii框架中的Controller控制器
Mar 29 PHP
PHP实现二维数组去重功能示例
Jan 12 PHP
php获取'/'传参的值简单方法
Jul 13 PHP
PHP实现数据库的增删查改功能及完整代码
Apr 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 print类函数使用总结
2010/06/25 PHP
PHP函数spl_autoload_register()用法和__autoload()介绍
2012/02/04 PHP
php根据isbn书号查询amazon网站上的图书信息的示例
2014/02/13 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
PHP文件上传处理案例分析
2016/10/15 PHP
浅谈PHP实现大流量下抢购方案
2017/12/15 PHP
PHP排序二叉树基本功能实现方法示例
2018/05/26 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
Javascript的构造函数和constructor属性
2010/01/09 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
2015/04/15 Javascript
深入浅析JavaScript中的作用域和上下文
2016/03/26 Javascript
javascript匀速动画和缓冲动画详解
2016/10/20 Javascript
基于JavaScript实现图片连播和联级菜单实例代码
2017/07/28 Javascript
bootstrap modal+gridview实现弹出框效果
2017/08/15 Javascript
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
2018/12/11 Javascript
ES6基础之展开语法(Spread syntax)
2019/02/21 Javascript
[01:38]完美世界DOTA2联赛PWL S3 集锦第四期
2020/12/21 DOTA
python实现带声音的摩斯码翻译实现方法
2015/05/20 Python
python django 原生sql 获取数据的例子
2019/08/14 Python
python区分不同数据类型的方法
2019/10/14 Python
python sorted方法和列表使用解析
2019/11/18 Python
python操作gitlab API过程解析
2019/12/27 Python
最小二乘法及其python实现详解
2020/02/24 Python
python3.9实现pyinstaller打包python文件成exe
2020/12/13 Python
俄罗斯化妆品和香水网上商店:Iledebeaute
2019/01/03 全球购物
大专自我鉴定范文
2013/10/23 职场文书
统计系教授推荐信
2014/02/28 职场文书
店面销售职位的职责
2014/03/09 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
2015年社区环境卫生工作总结
2015/04/21 职场文书
公司文体活动总结
2015/05/07 职场文书
基石观后感
2015/06/12 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
Win10加载疑难解答时出错发生意外错误的解决方法
2022/07/07 数码科技
Win11 Dev 预览版25174.1000发布 (附更新修复内容汇总)
2022/08/05 数码科技