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在字符串中查找另一个字符串
Nov 19 PHP
php win下Socket方式发邮件类
Aug 21 PHP
利用PHP实现图片等比例放大和缩小的方法详解
Jun 06 PHP
探讨如何把session存入数据库
Jun 07 PHP
PHP Class&amp;Object -- 解析PHP实现二叉树
Jun 25 PHP
php5.5中类级别的常量使用介绍
Oct 02 PHP
php图片处理函数获取类型及扩展名实例
Nov 19 PHP
php使用pdo连接并查询sql数据库的方法
Dec 24 PHP
php读取csv数据保存到数组的方法
Jan 03 PHP
php+ajax实现无刷新动态加载数据技术
Apr 28 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
May 04 PHP
浅析PHP类的反射来实现依赖注入过程
Feb 06 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 图片上传代码
2011/09/13 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
2015/12/08 PHP
php安装ssh2扩展的方法【Linux平台】
2016/07/20 PHP
YII框架http缓存操作示例
2019/04/29 PHP
基于jQuery的投票系统显示结果插件
2011/08/12 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
JavaScript中常用的六种互动方法示例
2015/03/13 Javascript
详解javascript实现瀑布流绝对式布局
2016/01/29 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
2016/04/05 Javascript
JS、jQuery中select的用法详解
2016/04/21 Javascript
KnockoutJs快速入门教程
2016/05/16 Javascript
微信小程序 window_x64环境搭建
2016/09/30 Javascript
node.js缺少mysql模块运行报错的解决方法
2016/11/13 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
如何开发出更好的JavaScript模块
2017/12/22 Javascript
vue+axios+promise实际开发用法详解
2018/10/15 Javascript
关于vue3默认把所有onSomething当作v-on事件绑定的思考
2020/05/15 Javascript
[03:09]DOTA2亚洲邀请赛 LGD战队出场宣传片
2015/02/07 DOTA
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
详解Python中expandtabs()方法的使用
2015/05/18 Python
Python装饰器简单用法实例小结
2018/12/03 Python
wxPython电子表格功能wx.grid实例教程
2019/11/19 Python
为什么黑客都用python(123个黑客必备的Python工具)
2020/01/31 Python
CSS3制作翻转效果_动力节点Java学院整理
2017/07/11 HTML / CSS
倩碧英国官网:Clinique英国
2018/08/10 全球购物
阿迪达斯希腊官方网上商店:adidas希腊
2019/04/06 全球购物
中国包裹转运寄送国际服务:Famiboat
2019/07/24 全球购物
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
荣耀商城:HIHONOR
2020/11/03 全球购物
几道Java和数据库的面试题
2013/05/30 面试题
自主招生自荐信范文
2013/12/04 职场文书
机关节能减排实施方案
2014/03/17 职场文书
自主招生英文自荐信
2015/03/25 职场文书
JavaScript中isPrototypeOf函数
2021/11/07 Javascript
MySQL数据库 安全管理
2022/05/06 MySQL