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的博客ping服务代码
Feb 04 PHP
php漏洞之跨网站请求伪造与防止伪造方法
Aug 15 PHP
通过dbi使用perl连接mysql数据库的方法
Apr 16 PHP
ThinkPHP的模版中调用session数据的方法
Jul 01 PHP
PHP多进程编程实例
Oct 15 PHP
一个比较不错的PHP日历类分享
Nov 18 PHP
php利用scws实现mysql全文搜索功能的方法
Dec 25 PHP
PHP实现获取客户端IP并获取IP信息
Mar 17 PHP
php解析base64数据生成图片的方法
Dec 06 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
Oct 14 PHP
PHP实现字符串的全排列详解
Apr 24 PHP
PHP filter_var() 函数, 验证判断EMAIL,URL等
Mar 09 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
解决MySQL中文输出变成问号的问题
2008/06/05 PHP
swfupload 多文件上传实现代码
2008/08/27 PHP
基于php在各种web服务器的运行模式详解
2013/06/03 PHP
使用PHP Socket写的POP3类
2013/10/30 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
javascript 学习笔记(一)DOM基本操作
2011/04/08 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
详解JavaScript时间格式化
2015/12/23 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
js实现PC端根据IP定位当前城市地理位置
2017/02/22 Javascript
微信小程序实战之轮播图(3)
2017/04/17 Javascript
angularjs实现过滤并替换关键字小功能
2017/09/19 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
vue实现轮播图帧率播放
2021/01/26 Vue.js
Python中用altzone()方法处理时区的教程
2015/05/22 Python
Python爬取APP下载链接的实现方法
2016/09/30 Python
python snownlp情感分析简易demo(分享)
2017/06/04 Python
Python使用回溯法子集树模板解决迷宫问题示例
2017/09/01 Python
详解Django将秒转换为xx天xx时xx分
2019/09/27 Python
python自动生成model文件过程详解
2019/11/02 Python
Django实现简单网页弹出警告代码
2019/11/15 Python
Python(PyS60)实现简单语音整点报时
2019/11/18 Python
python画环形图的方法
2020/03/25 Python
python中列表的含义及用法
2020/05/26 Python
详解pandas.DataFrame.plot() 画图函数
2020/06/14 Python
IE滤镜与CSS3效果(详细整理分享)
2013/01/25 HTML / CSS
Opodo意大利:欧洲市场上领先的在线旅行社
2019/10/24 全球购物
新闻网站实习自我鉴定
2013/09/25 职场文书
资产评估专业学生的自我鉴定
2013/11/14 职场文书
集团薪酬管理制度
2014/01/13 职场文书
生日主持词
2014/03/20 职场文书
中学生期中自我鉴定
2014/04/20 职场文书
政风行风整改方案
2014/10/25 职场文书
合同权益转让协议书模板
2014/11/18 职场文书
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python