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实现Ftp用户的在线管理的代码
Mar 06 PHP
php5编程中的异常处理详细方法介绍
Jul 29 PHP
PHP之COOKIE支持详解
Sep 20 PHP
判断PHP数组是否为空的代码
Sep 08 PHP
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
Jun 21 PHP
thinkphp四种url访问方式详解
Nov 28 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
Mar 19 PHP
php生成短域名函数
Mar 23 PHP
详谈PHP面向对象中常用的关键字和魔术方法
Feb 04 PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
May 05 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
Aug 23 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读取文件并可支持远程文件的代码分享
2012/10/03 PHP
学习php设计模式 php实现访问者模式(Visitor)
2015/12/07 PHP
详解php命令注入攻击
2019/04/06 PHP
JQuery 1.4 中的Ajax问题
2010/01/23 Javascript
在多个页面使用同一个HTML片段《续》
2011/03/04 Javascript
javascript继承之为什么要继承
2012/11/10 Javascript
javascript ready和load事件的区别示例介绍
2013/08/30 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
2013/10/29 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
Javascript基础教程之while语句
2015/01/18 Javascript
JavaScript中return false的用法
2015/03/12 Javascript
javascript实现很浪漫的气泡冒出特效
2020/09/05 Javascript
jQuery 获取屏幕高度、宽度的简单实现案例
2016/05/17 Javascript
深入理解js generator数据类型
2016/08/16 Javascript
Node.js dgram模块实现UDP通信示例代码
2017/09/26 Javascript
js 判断一个数字是不是2的n次方幂的实例
2017/11/26 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
VUE+node(express)实现前后端分离
2019/10/13 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
Python写的PHPMyAdmin暴力破解工具代码
2014/08/06 Python
使用简单工厂模式来进行Python的设计模式编程
2016/03/01 Python
Python只用40行代码编写的计算器实例
2017/05/10 Python
Python随机读取文件实现实例
2017/05/25 Python
利用Python爬取微博数据生成词云图片实例代码
2017/08/31 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
2020/01/19 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
Keras 加载已经训练好的模型进行预测操作
2020/06/17 Python
css3中less实现文字长阴影(long shadow)
2020/04/24 HTML / CSS
美国标志性加大尺码时装品牌:Ashley Stewart
2016/12/15 全球购物
毕业生机械建模求职信
2013/10/14 职场文书
会展策划与管理专业大学生职业生涯规划
2014/02/07 职场文书
离婚答辩状怎么写
2015/05/22 职场文书
古诗之感恩老师
2019/10/24 职场文书
浅谈mysql增加索引不生效的几种情况
2021/06/23 MySQL
Docker部署Mysql8的实现步骤
2022/07/07 Servers
Mysql的Table doesn't exist问题及解决
2022/12/24 MySQL