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 相关文章推荐
将OICQ数据转成MYSQL数据
Oct 09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
Jun 26 PHP
PHP中ini_set与ini_get用法实例
Nov 04 PHP
php生成不重复随机数、数组的4种方法分享
Mar 30 PHP
php实现粘贴截图并完成上传功能
May 17 PHP
php验证码的制作思路和实现方法
Nov 12 PHP
thinkPHP中session()方法用法详解
Dec 08 PHP
PHP 500报错的快速解决方法
Dec 14 PHP
php文件管理基本功能简单操作
Jan 16 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
PHP时间戳和日期相互转换操作实例小结
Dec 18 PHP
PDO实现学生管理系统
Mar 21 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
ajax完美实现两个网页 分页功能的实例代码
2013/04/16 PHP
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
2013/06/06 PHP
深入PHP购物车模块功能分析(函数讲解,附源码)
2013/06/25 PHP
php的declare控制符和ticks教程(附示例)
2014/03/21 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
php自定义函数实现二维数组按指定key排序的方法
2016/09/29 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
PHP实现本地图片转base64格式并上传
2020/05/29 PHP
Track Image Loading效果代码分析
2007/08/13 Javascript
JavaScript 对象的属性和方法4种不同的类型
2010/03/19 Javascript
JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性
2012/10/11 Javascript
JS正则中的RegExp对象对象
2012/11/07 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
node.js中的http.response.write方法使用说明
2014/12/14 Javascript
JS+CSS实现实用的单击输入框弹出选择框的方法
2015/02/28 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
教你5分钟学会用requirejs(必看篇)
2017/07/25 Javascript
JavaScript 完成注册页面表单校验的实例
2017/08/19 Javascript
setTimeout时间设置为0详细解析
2018/03/13 Javascript
使用watch在微信小程序中实现全局状态共享
2019/06/03 Javascript
javascript将16进制的字符串转换为10进制整数hex
2020/03/05 Javascript
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
[55:02]2014 DOTA2国际邀请赛中国区预选赛 HGT VS Orenda
2014/05/21 DOTA
django接入新浪微博OAuth的方法
2015/06/29 Python
Python制作爬虫抓取美女图
2016/01/20 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
Python中拆分字符串的操作方法
2019/07/23 Python
Tiqets荷兰:出售欧洲最美丽的景点和博物馆门票
2018/01/09 全球购物
FC-Moto丹麦:欧洲最大的摩托车服装和头盔商店之一
2019/08/20 全球购物
Piercing Pagoda官网:耳环、戒指、项链、手链等
2020/09/28 全球购物
Java的接口和C++的虚类的相同和不同处
2014/03/27 面试题
2014年秋季开学典礼致辞
2014/08/02 职场文书
工程移交协议书
2016/03/24 职场文书
python批量更改目录名/文件名的方法
2021/04/18 Python
Python+Selenium实现抖音、快手、B站、小红书、微视、百度好看视频、西瓜视频、微信视频号、搜狐视频、一点号、大风号、趣头条等短视频自动发布
2022/04/13 Python