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实现mysql同步的实现方法
Oct 21 PHP
PHP编码规范之注释和文件结构说明
Jul 09 PHP
php preg_filter执行一个正则表达式搜索和替换
Feb 27 PHP
PHP中使用unset销毁变量并内存释放问题
Jul 05 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
Jun 13 PHP
ThinkPHP实现带验证码的文件上传功能实例
Nov 01 PHP
PHP CodeIgniter框架的工作原理研究
Mar 30 PHP
PHP中生成UUID自定义函数分享
Jun 10 PHP
详解PHP中的状态模式编程
Aug 11 PHP
分享五个PHP7性能优化提升技巧
Dec 07 PHP
thinkphp3.x中cookie方法的用法分析
May 19 PHP
PHP实现的分解质因数操作示例
Aug 01 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.ini 中文版
2006/10/28 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
Display SQL Server Login Mode
2007/06/21 Javascript
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
Jqyery中同等与js中windows.onload的应用
2011/05/10 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
jquery 利用show和hidden实现级联菜单示例代码
2013/08/09 Javascript
JS页面延迟执行一些方法(整理)
2013/11/11 Javascript
JavaScript中的Math.LOG2E属性使用详解
2015/06/14 Javascript
jQuery实现购物车表单自动结算效果实例
2015/08/10 Javascript
jquery实现隐藏在左侧的弹性弹出菜单效果
2015/09/18 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
vue 中 命名视图的用法实例详解
2019/08/14 Javascript
解决Vue-Router升级导致的Uncaught (in promise)问题
2020/08/07 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
实用的 vue tags 创建缓存导航的过程实现
2020/12/03 Vue.js
[01:57]2016完美“圣”典风云人物:国士无双专访
2016/12/04 DOTA
Python解析树及树的遍历
2016/02/03 Python
python中的迭代和可迭代对象代码示例
2017/12/27 Python
python中in在list和dict中查找效率的对比分析
2018/05/04 Python
python多进程控制学习小结
2018/10/31 Python
python实现剪切功能
2019/01/23 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
python3实现绘制二维点图
2019/12/04 Python
python itsdangerous模块的具体使用方法
2020/02/17 Python
什么是Python中的顺序表
2020/06/02 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
Merrell迈乐澳大利亚网站:购买户外登山鞋
2017/05/28 全球购物
函授本科毕业生自我鉴定
2013/10/16 职场文书
专业幼师实习生自我鉴定范文
2013/12/08 职场文书
房地产项目建议书
2014/03/12 职场文书
终止劳动合同协议书
2014/04/14 职场文书
2014年辅导员工作总结
2014/11/18 职场文书
关于办理居住证的介绍信模板
2019/11/27 职场文书
python中如何对多变量连续赋值
2021/06/03 Python
TV动画《史上最强大魔王转生为村民A》番宣CM公布
2022/04/01 日漫