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 相关文章推荐
如何开发一个虚拟域名系统
Oct 09 PHP
php下mysql数据库操作类(改自discuz)
Jul 03 PHP
PHP 循环删除无限分类子节点的实现代码
Jun 21 PHP
一组PHP可逆加密解密算法实例代码
Jan 21 PHP
php缩放gif和png图透明背景变成黑色的解决方法
Oct 14 PHP
Nginx下配置codeigniter框架方法
Apr 07 PHP
修改WordPress中文章编辑器的样式的方法详解
Dec 15 PHP
Zend Framework教程之Zend_Config_Xml用法分析
Mar 23 PHP
php使用get_class_methods()函数获取分类的方法
Jul 20 PHP
thinkphp3.2.3 分页代码分享
Jul 28 PHP
thinkphp整合微信支付代码分享
Nov 24 PHP
PHP中模糊查询并关联三个select框
Jun 19 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
Windows下的PHP5.0详解
2006/11/18 PHP
PHP临时文件的安全性分析
2014/07/04 PHP
php支付宝在线支付接口开发教程
2016/09/19 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
2016/11/04 PHP
Add Formatted Data to a Spreadsheet
2007/06/12 Javascript
基于jquery的拖动布局插件
2011/11/25 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
2013/10/17 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
2014/06/30 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
2016/12/13 Javascript
vue里如何主动销毁keep-alive缓存的组件
2019/03/21 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
判断“命令按钮”是否被鼠标单击详解
2019/07/31 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
JS 数组基本用法入门示例解析
2020/01/16 Javascript
Python使用Flask框架同时上传多个文件的方法
2015/03/21 Python
python单例模式实例分析
2015/04/08 Python
利用python程序生成word和PDF文档的方法
2017/02/14 Python
在django中实现页面倒数几秒后自动跳转的例子
2019/08/16 Python
python tkinter图形界面代码统计工具(更新)
2019/09/18 Python
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
Linux的文件类型
2012/03/07 面试题
酒店公关部经理岗位职责
2013/11/24 职场文书
公积金转移接收函
2014/01/11 职场文书
物业总经理岗位职责
2014/02/28 职场文书
爱情寄语大全
2014/04/09 职场文书
保险专业求职信
2014/07/07 职场文书
大学课外活动总结
2014/07/09 职场文书
原料仓管员岗位职责
2015/04/01 职场文书
入伍通知书
2015/04/23 职场文书
听证通知书
2015/04/24 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
管理失职检讨书范文
2015/05/05 职场文书
CSS Transition通过改变Height实现展开收起元素
2021/08/07 HTML / CSS
Python利用Turtle绘制哆啦A梦和小猪佩奇
2022/04/04 Python
Python Pandas解析读写 CSV 文件
2022/04/11 Python