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 中文乱码解决办法总结分析
Jul 30 PHP
PHP的autoload机制的实现解析
Sep 15 PHP
php遍历目录与文件夹的多种方法详解
Nov 14 PHP
discuz加密解密函数使用方法和中文注释
Jan 21 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
May 04 PHP
PHP扩展CURL的用法详解
Jun 20 PHP
php模拟登陆的实现方法分析
Jan 09 PHP
php表单提交实例讲解
Nov 12 PHP
ThinkPHP项目分组配置方法分析
Mar 23 PHP
php防止sql注入的方法详解
Feb 20 PHP
完美解决在ThinkPHP控制器中命名空间的问题
May 05 PHP
PHP实现的简单sha1加密功能示例
Aug 27 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调用shell的方法
2014/11/05 PHP
PHP微信公众号自动发送红包API
2016/06/01 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
将函数的实际参数转换成数组的方法
2010/01/25 Javascript
浅说js变量
2011/05/25 Javascript
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
2012/02/16 Javascript
JS之Date对象和获取系统当前时间详解
2014/01/13 Javascript
解决ueditor jquery javascript 取值问题
2014/12/30 Javascript
js添加千分位的实现代码(超简单)
2016/08/01 Javascript
jQuery过滤选择器经典应用
2016/08/18 Javascript
解决前端跨域问题方案汇总
2016/11/20 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
vue.js 添加 fastclick的支持方法
2018/08/28 Javascript
Vue实现微信支付功能遇到的坑
2019/06/05 Javascript
vue 数据双向绑定的实现方法
2021/03/04 Vue.js
[03:51]吞吞映像 每周精彩击杀top10第二弹
2014/06/25 DOTA
Python中使用hashlib模块处理算法的教程
2015/04/28 Python
python的else子句使用指南
2016/02/27 Python
python清理子进程机制剖析
2017/11/23 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
Python __slots__的使用方法
2020/11/15 Python
细说NumPy数组的四种乘法的使用
2020/12/18 Python
纯CSS实现菜单、导航栏的3D翻转动画效果
2014/04/23 HTML / CSS
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
Kiwi.com中国:找到特价机票并发现新目的地
2019/10/27 全球购物
统计学专业毕业生的自我评价分享
2013/11/28 职场文书
毕业研究生的自我鉴定
2013/11/30 职场文书
2014年国培研修感言
2014/03/09 职场文书
初中优秀学生评语
2014/12/29 职场文书
个人自我鉴定怎么写?
2019/07/01 职场文书
SQL 窗口函数实现高效分页查询的案例分析
2021/05/21 SQL Server
MySQL的安装与配置详细教程
2021/06/26 MySQL
Java8中接口的新特性使用指南
2021/11/01 Java/Android