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
Dedecms V3.1 生成HTML速度的优化办法
Mar 18 PHP
PHP Session变量不能传送到下一页的解决方法
Nov 27 PHP
《PHP编程最快明白》第五讲:php目录、文件操作
Nov 01 PHP
PHP中判断变量为空的几种方法分享
Aug 26 PHP
php正则表达式学习笔记
Nov 13 PHP
PHP中类属性与类静态变量的访问方法示例
Jul 13 PHP
PHP获取当前URL路径的处理方法(适用于多条件筛选列表)
Feb 10 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
Jul 10 PHP
PHP-FPM的配置与优化讲解
Mar 15 PHP
PHP使用递归按层级查找数据的方法
Nov 10 PHP
解析laravel使用workerman用户交互、服务器交互
Apr 28 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
支持数组的ADDSLASHES的php函数
2010/02/16 PHP
PHP中strtotime函数使用方法详解
2011/11/27 PHP
php实现mysql事务处理的方法
2014/12/25 PHP
php数字运算验证码的实现代码
2015/07/30 PHP
smarty中常用方法实例总结
2015/08/07 PHP
Javascript面象对象成员、共享成员变量实验
2010/11/19 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
2011/11/14 Javascript
JS画5角星方法介绍
2013/09/17 Javascript
ie9 提示'console' 未定义问题的解决方法
2014/03/20 Javascript
Javascript学习笔记之数组的构造函数
2014/11/23 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
2016/05/03 Javascript
详解微信小程序入门五: wxml文件引用、模版、生命周期
2017/01/20 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
layui.js实现的表单验证功能示例
2017/11/15 Javascript
vue 中filter的多种用法
2018/04/26 Javascript
vue3.0 CLI - 1 - npm 安装与初始化的入门教程
2018/09/14 Javascript
了解JavaScript函数中的默认参数
2019/05/30 Javascript
vue和iview实现Scroll 数据无限滚动功能
2019/10/31 Javascript
JS中数组实现代码(倒序遍历数组,数组连接字符串)
2019/12/29 Javascript
[18:32]DOTA2 HEROS教学视频教你分分钟做大人-谜团
2014/06/12 DOTA
日常整理python执行系统命令的常见方法(全)
2015/10/22 Python
python实现将一个数组逆序输出的方法
2018/06/25 Python
windows7 32、64位下python爬虫框架scrapy环境的搭建方法
2018/11/29 Python
python实现维吉尼亚加密法
2019/03/20 Python
python装饰器常见使用方法分析
2019/06/26 Python
解决Python3 抓取微信账单信息问题
2019/07/19 Python
Python中logging日志记录到文件及自动分割的操作代码
2020/08/05 Python
收集的22款给力的HTML5和CSS3帮助工具
2012/09/14 HTML / CSS
总经理助理职责
2014/02/04 职场文书
初中同学聚会感言
2014/02/11 职场文书
银行简历自我评价
2014/02/11 职场文书
租房协议书范例
2014/10/14 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
大连导游词
2015/02/12 职场文书
公务员学习中国梦心得体会
2016/01/05 职场文书
房屋转让协议书(标准范本)
2016/03/21 职场文书