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 动态随机生成验证码类代码
Apr 09 PHP
用php随机生成福彩双色球号码的2种方法
Feb 04 PHP
php通过字符串调用函数示例
Mar 02 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
Mar 05 PHP
Smarty模板简单配置与使用方法示例
May 23 PHP
PHP自定义函数格式化json数据示例
Sep 14 PHP
Yii框架中sphinx索引配置方法解析
Oct 18 PHP
Thinkphp5结合layer弹窗定制操作结果页面
Jul 07 PHP
php和html的区别点详细总结
Sep 24 PHP
PHP实现发送微博消息功能完整示例
Dec 04 PHP
php利用ZipArchive类操作文件的实例
Jan 21 PHP
PHP时间类完整代码实例
Feb 26 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下intval()和(int)转换使用与区别
2008/07/18 PHP
php实现的一段简单概率相关代码
2016/05/30 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
2017/05/05 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
小议Javascript中的this指针
2010/03/18 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
2014/09/06 Javascript
AngularJS HTML编译器介绍
2014/12/06 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
Javascript缓存API
2016/06/14 Javascript
js创建数组的简单方法
2016/07/27 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
bootstrap switch开关组件使用方法详解
2017/08/22 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
JavaScript引用类型Object常见用法实例分析
2018/08/08 Javascript
nodejs中函数的调用实例详解
2018/10/31 NodeJs
[01:10]DOTA2亚洲邀请赛 征战号角响彻全场
2015/01/06 DOTA
Python性能优化技巧
2015/03/09 Python
python实现简单的计时器功能函数
2015/03/14 Python
Python远程桌面协议RDPY安装使用介绍
2015/04/15 Python
发布你的Python模块详解
2016/09/15 Python
python负载均衡的简单实现方法
2018/02/04 Python
python使用numpy读取、保存txt数据的实例
2018/10/14 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
一文秒懂python读写csv xml json文件各种骚操作
2019/07/04 Python
python 解决flask uwsgi 获取不到全局变量的问题
2019/12/22 Python
Python3.8安装Pygame教程步骤详解
2020/08/14 Python
python requests库的使用
2021/01/06 Python
一些Solaris面试题
2015/12/22 面试题
工厂采购员岗位职责
2014/04/08 职场文书
学雷锋月活动总结
2014/04/25 职场文书
爱护公物演讲稿
2014/09/09 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript
第四次工业革命,打工人与机器人的竞争
2022/04/21 数码科技