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中的串行化变量和序列化对象
Sep 05 PHP
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
Nov 18 PHP
用PHP实现将GB编码转换为UTF8
Nov 25 PHP
PHP MYSQL乱码问题,使用SET NAMES utf8校正
Nov 30 PHP
如何突破PHP程序员的技术瓶颈分析
Jul 17 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
Mar 05 PHP
php实现的任意进制互转类分享
Jul 07 PHP
详解PHP中的Traits
Jul 29 PHP
PHP中header函数的用法及其注意事项详解
Jun 13 PHP
PHP反射机制原理与用法详解
Feb 15 PHP
PHP ADODB生成下拉列表框功能示例
May 29 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 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
php5编程中的异常处理详细方法介绍
2008/07/29 PHP
PHP 强制性文件下载功能的函数代码(任意文件格式)
2010/05/26 PHP
Linux系统递归生成目录中文件的md5的方法
2015/06/29 PHP
php7下的filesize函数
2019/09/30 PHP
PHP 图片处理
2020/09/16 PHP
页面中iframe相互传值传参
2009/12/13 Javascript
juqery 学习之三 选择器 可见性 元素属性
2010/11/25 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
JavaScript常用基础知识强化学习
2015/12/09 Javascript
简单谈谈json跨域
2016/03/13 Javascript
基于BootStrap Metronic开发框架经验小结【七】数据的导入、导出及附件的查看处理
2016/05/12 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
2016/06/06 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
2016/10/21 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
Node.js Buffer用法解读
2018/05/18 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
使用vue-router完成简单导航功能【推荐】
2018/06/28 Javascript
iview实现select tree树形下拉框的示例代码
2018/12/21 Javascript
JavaScript JSON数据处理全集(小结)
2019/08/15 Javascript
Python编程实现蚁群算法详解
2017/11/13 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
Python数据类型之String字符串实例详解
2019/05/08 Python
Django 实现admin后台显示图片缩略图的例子
2019/07/28 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
2021/03/03 Python
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
酒店管理专业学生求职信
2013/09/27 职场文书
英语翻译系毕业生求职信
2013/09/29 职场文书
中职生自荐信
2013/10/13 职场文书
十佳家长事迹材料
2014/08/26 职场文书
法定代表人授权委托书范文
2014/09/22 职场文书
自我查摆剖析材料
2014/10/11 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python