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 文件上传类代码
Aug 06 PHP
PHP中如何判断AJAX提交的数据
Feb 05 PHP
PHP清除数组中所有字符串两端空格的方法
Oct 20 PHP
PHP中Memcache操作类及用法实例
Dec 12 PHP
PIGCMS 如何关闭聊天机器人
Feb 12 PHP
详解PHP的Yii框架的运行机制及其路由功能
Mar 17 PHP
Zend Framework分页类用法详解
Mar 22 PHP
使用PHP+MySql实现微信投票功能实例代码
Sep 29 PHP
Thinkphp5行为使用方法汇总
Dec 21 PHP
PHP实现获取url地址中顶级域名的方法示例
Jun 05 PHP
PHP设计模式概论【概念、分类、原则等】
May 01 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实现网站插件机制的方法
2009/11/10 PHP
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
2013/06/18 PHP
smarty内置函数section的用法
2015/01/22 PHP
详解php中反射的应用
2016/03/15 PHP
Laravel 批量更新多条数据的示例
2017/11/27 PHP
FF火狐下获取一个元素同类型的相邻元素实现代码
2012/12/15 Javascript
Javascript中封装window.open解决不兼容问题
2014/09/28 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
2014/11/20 Javascript
jQuery on()方法使用技巧详解
2015/04/16 Javascript
jQuery AJAX timeout 超时问题详解
2016/06/21 Javascript
ie下js不执行的几种可能
2017/02/28 Javascript
node+vue实现用户注册和头像上传的实例代码
2017/07/20 Javascript
基于JS脚本语言的基础语法详解
2017/07/22 Javascript
js实现日期显示的一些操作(实例讲解)
2017/07/27 Javascript
JS验证码实现代码
2017/09/14 Javascript
浅谈JS函数节流防抖
2017/10/18 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
2017/12/01 Javascript
create-react-app安装出错问题解决方法
2018/09/04 Javascript
JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例
2019/02/21 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
Vue 中使用富文本编译器wangEditor3的方法
2019/09/26 Javascript
[01:08:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS LGD-CDEC
2014/05/22 DOTA
python编写暴力破解FTP密码小工具
2014/11/19 Python
以一段代码为实例快速入门Python2.7
2015/03/31 Python
Python ftp上传文件
2016/02/13 Python
Django中url的反向查询的方法
2018/03/14 Python
来自Ocado的宠物商店:Fetch
2018/07/10 全球购物
外语系毕业生自荐信范文
2013/12/16 职场文书
广告学专业求职信
2014/06/19 职场文书
关于晚自习早退的检讨书
2014/09/13 职场文书
缓刑期间思想汇报范文
2014/10/10 职场文书
行政处罚告知书
2015/07/01 职场文书
2019个人工作自我评价范文(3篇)
2019/09/19 职场文书
Java 在线考试云平台的实现
2021/11/23 Java/Android
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
2022/05/04 Python
解决Python保存文件名太长OSError: [Errno 36] File name too long
2022/05/11 Python