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+DBM的同学录程序(4)
Oct 09 PHP
文件上传程序的全部源码
Oct 09 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
Jul 18 PHP
PHP学习散记_编码(json_encode 中文不显示)
Nov 10 PHP
屏蔽机器人从你的网站搜取email地址的php代码
Nov 14 PHP
解析php中两种缩放图片的函数,为图片添加水印
Jun 14 PHP
完美解决PHP中的Cannot modify header information 问题
Aug 12 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
Jun 23 PHP
CI(CodeIgniter)模型用法实例分析
Jan 20 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
Sep 09 PHP
PHP 网站修改默认访问文件的nginx配置
May 27 PHP
PHP receiveMail实现收邮件功能
Apr 25 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操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
php基本函数汇总
2015/07/09 PHP
PHP实现的QQ空间g_tk加密算法
2015/07/09 PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
2016/07/07 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
php实现基于PDO的预处理示例
2017/03/28 PHP
jquery中filter方法用法实例分析
2015/02/06 Javascript
简介JavaScript中toUpperCase()方法的使用
2015/06/06 Javascript
JavaScript实现点击按钮字体放大、缩小
2016/02/29 Javascript
JS实现根据文件字节数返回文件大小的方法
2016/08/02 Javascript
AngularJS 自定义指令详解及示例代码
2016/08/17 Javascript
js实现文字向上轮播功能
2017/01/13 Javascript
JS实现的邮箱提示补全效果示例
2018/01/30 Javascript
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
vue动态绑定class的几种常用方式小结
2019/05/21 Javascript
Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解
2020/04/29 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
2020/09/01 Javascript
JavaScript编码小技巧分享
2020/09/17 Javascript
vue实现登录功能
2020/12/31 Vue.js
详解ES6实现类的私有变量的几种写法
2021/02/10 Javascript
python教程之用py2exe将PY文件转成EXE文件
2014/06/12 Python
Python中使用gzip模块压缩文件的简单教程
2015/04/08 Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
2016/06/14 Python
Django基础之Model操作步骤(介绍)
2017/05/27 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
2018/05/07 Python
django2用iframe标签完成网页内嵌播放b站视频功能
2018/06/20 Python
python 自定义装饰器实例详解
2019/07/20 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
Python实现FLV视频拼接功能
2020/01/21 Python
python 制作python包,封装成可用模块教程
2020/07/13 Python
一款纯css3实现的颜色渐变按钮的代码教程
2014/11/12 HTML / CSS
关于HTML5语义标签的实践(blog页面)
2016/07/12 HTML / CSS
为什么要做架构设计
2015/07/08 面试题
国家励志奖学金获奖感言
2014/01/09 职场文书
四年级下册教学反思
2014/02/01 职场文书
瘦西湖导游词
2015/02/03 职场文书