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数据代码
Jun 05 PHP
php 表单验证实现代码
Mar 10 PHP
Windows IIS PHP 5.2 安装与配置方法
Jun 08 PHP
php 中的4种标记风格介绍
May 10 PHP
解析PHP中$_FILES的使用以及注意事项
Jul 05 PHP
JoshChen_php新手进阶高手不可或缺的规范介绍
Aug 16 PHP
3个PHP多维数组转为一维数组的方法实例
Mar 13 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
Jun 25 PHP
thinkPHP2.1自定义标签库的导入方法详解
Jul 20 PHP
Yii2中多表关联查询hasOne hasMany的方法
Feb 15 PHP
php实现 master-worker 守护多进程模式的实例代码
Jul 20 PHP
聊聊 PHP 8 新特性 Attributes
Aug 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
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
2019/10/16 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
JavaScript Event学习第六章 事件的访问
2010/02/07 Javascript
Javascript 函数中的参数使用分析
2010/03/27 Javascript
初识JQuery 实例一(first)
2011/03/16 Javascript
js 函数的副作用分析
2011/08/23 Javascript
推荐17个优美新鲜的jQuery的工具提示插件
2012/09/14 Javascript
IE中getElementsByName()对有些元素无效的解决方案
2014/09/28 Javascript
js点击选择文本的方法
2015/02/09 Javascript
原生js和jQuery写的网页选项卡特效对比
2015/04/27 Javascript
JavaScript学习笔记之ES6数组方法
2016/03/25 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
webpack打包单页面如何引用的js
2017/06/07 Javascript
node 命令方式启动修改端口的方法
2018/05/12 Javascript
vue动态删除从数据库倒入列表的某一条方法
2018/09/29 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
[01:00:14]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第二场 2月28日
2021/03/11 DOTA
Python首次安装后运行报错(0xc000007b)的解决方法
2016/10/18 Python
python 专题九 Mysql数据库编程基础知识
2017/03/16 Python
python+opencv实现的简单人脸识别代码示例
2017/11/14 Python
利用Python2下载单张图片与爬取网页图片实例代码
2017/12/25 Python
python实现跨excel的工作表sheet之间的复制方法
2018/05/03 Python
Django开发中的日志输出的方法
2018/07/02 Python
python用pandas数据加载、存储与文件格式的实例
2018/12/07 Python
Python实现插入排序和选择排序的方法
2019/05/12 Python
pandas.cut具体使用总结
2019/06/24 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
2021/03/02 Python
逻辑链路控制协议
2016/10/01 面试题
2014年教师培训的自我评价
2014/01/03 职场文书
对领导班子的意见和建议
2015/06/08 职场文书
户外拓展训练感想
2015/08/07 职场文书
离职员工给领导和同事的感谢信
2015/11/03 职场文书
小学英语教学反思范文
2016/02/15 职场文书