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正则走开
Mar 15 PHP
php 随机排序广告的实现代码
May 09 PHP
如何用php生成扭曲及旋转的验证码图片
Jun 07 PHP
php curl选项列表(超详细)
Jul 01 PHP
php编写批量生成不重复的卡号密码代码
May 14 PHP
php实现的验证码文件类实例
Jun 18 PHP
基于JQuery+PHP编写砸金蛋中奖程序
Sep 08 PHP
PHP 实现的将图片转换为TXT
Oct 21 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
May 18 PHP
3种方法轻松处理php开发中emoji表情的问题
Jul 18 PHP
phpStudy 2016 使用教程详解(支持PHP7)
Oct 18 PHP
vmware linux系统安装最新的php7图解
Apr 14 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
收音机玩机评测 406 篇视频合集
2020/03/11 无线电
php smarty模板引擎的6个小技巧
2014/04/24 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
php将字符串转换为数组实例讲解
2020/05/05 PHP
PHP获取当前时间不准确问题解决方案
2020/08/14 PHP
脚本吧 - 幻宇工作室用到js,超强推荐share.js
2006/12/23 Javascript
javascript 一段左右两边随屏滚动的代码
2009/06/18 Javascript
浅谈javascript六种数据类型以及特殊注意点
2013/12/20 Javascript
用javascript关闭本窗口技巧小结
2014/09/05 Javascript
浅谈Javascript中Object与Function对象
2015/09/26 Javascript
JavaScript开发者必备的10个Sublime Text插件
2016/02/27 Javascript
js实现统计字符串中特定字符出现个数的方法
2016/08/02 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
详解axios在node.js中的post使用
2017/04/27 Javascript
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
详解vue-cli官方脚手架配置
2018/07/20 Javascript
vue 遮罩层阻止默认滚动事件操作
2020/07/28 Javascript
javascript前端和后台进行数据交互方法示例
2020/08/07 Javascript
Python天气预报采集器实现代码(网页爬虫)
2012/10/07 Python
Python深入学习之上下文管理器
2014/08/31 Python
windows系统下Python环境搭建教程
2017/03/28 Python
python3之微信文章爬虫实例讲解
2017/07/12 Python
Python探索之Metaclass初步了解
2017/10/28 Python
用python实现k近邻算法的示例代码
2018/09/06 Python
Python如何实现转换URL详解
2019/07/02 Python
numpy 返回函数的上三角矩阵实例
2019/11/25 Python
草莓网英国官网:Strawberrynet UK
2017/02/12 全球购物
Office DEPOT法国官网:欧迪办公用品采购
2018/01/03 全球购物
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
捷克多品牌在线时尚商店:ANSWEAR.cz
2020/10/03 全球购物
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
最新自我评价范文
2013/11/16 职场文书
党员群众路线整改措施及今后努力方向
2014/10/28 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书
利用Python+OpenCV三步去除水印
2021/05/28 Python
Python 一键获取电脑浏览器的账号密码
2022/05/11 Python