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合并两个数组的两种方式的异同
Sep 14 PHP
深入解析Session是否必须依赖Cookie
Aug 02 PHP
php一次性删除前台checkbox多选内容的方法
Sep 22 PHP
easyui的tabs update正确用法分享
Mar 21 PHP
ThinkPHP3.1数据CURD操作快速入门
Jun 19 PHP
标准版Eclipse搭建PHP环境的详细步骤
Nov 18 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
May 19 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
Feb 15 PHP
php 调用百度sms来发送短信的实现示例
Nov 02 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 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抓取https的内容的代码
2010/04/06 PHP
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
PHP生成随机用户名和密码的实现代码
2013/02/27 PHP
php获取当前url地址的方法小结
2017/01/10 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
2017/06/09 PHP
PHP创建自己的Composer包方法
2018/04/09 PHP
javascript或asp实现的判断身份证号码是否正确两种验证方法
2009/11/26 Javascript
jquery ajax abort()的使用方法
2010/10/28 Javascript
jquery实现奇偶行赋值不同css值
2012/02/17 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
同时使用n个window onload加载实例介绍
2013/04/25 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
JS实现仿腾讯微博无刷新删除微博效果代码
2015/10/16 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
jQuery改变form表单的action,并进行提交的实现代码
2016/05/25 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
2017/03/29 Javascript
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
详解easyui 切换主题皮肤
2019/04/04 Javascript
vue动态渲染svg、添加点击事件的实现
2020/03/13 Javascript
Vue中添加滚动事件设置的方法详解
2020/09/14 Javascript
Python+微信接口实现运维报警
2016/08/27 Python
Python_LDA实现方法详解
2017/10/25 Python
python pandas 组内排序、单组排序、标号的实例
2018/04/12 Python
对python 命令的-u参数详解
2018/12/03 Python
pycharm 将python文件打包为exe格式的方法
2019/01/16 Python
python 函数中的参数类型
2020/02/11 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
2020/04/22 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
2020/06/28 Python
FLIR美国官网:热成像, 夜视和红外摄像系统
2018/07/13 全球购物
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
普通PHP程序员笔试题
2016/01/01 面试题
幼儿园教师自我鉴定
2014/03/20 职场文书
房产委托公证书
2014/04/08 职场文书
2014年文学毕业生自我鉴定
2014/04/23 职场文书
值班管理制度范本
2015/08/06 职场文书