博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php+mysql实现大文件处理
阅读量:5913 次
发布时间:2019-06-19

本文共 1233 字,大约阅读时间需要 4 分钟。

hot3.png

大文件内容写入数据库

问题和困难

1.文件太大,数据不能一次读取

2.数据存在冗余,所以不能单纯的插入操作

解决

1.按行读取文件,计数累加,超过10000万行进行写库操作

while ($str = fgetcsv($file)) { //每次读取CSV里面的一行内容	$str = explode("	",$str[0]);	$insert_data[] = array(		'phone' => $str[0],		'type' => $str[2],		'number' => $str[3],	);	$time++;	if ($time > 10000) {		$value = "";		$time = 0;		foreach ($insert_data as $key => $item) {			$value .= "(" . join(",",$item) ."),";		}		$value = trim($value,',');		// var_dump($value);die;		save($value,$mysqli);		// die;	}}

2.写数据库操作,自动根据数据库内容进行选择插入还是修改操作

INSERT INTO flag_17_09 (`phone`,`type`,`number`) VALUES $value ON DUPLICATE KEY UPDATE number=number+VALUES(number)

如果主键存在,则更新,如不存在则执行插入操作,更新时将本次数据与原有数据相加保存

其中,向MySQL写入大量数据时,可以考虑采用PDO模式

ini_set('max_execution_time','0');$pdo = new PDO("mysql:host=localhost;dbname=oradt_cloud1520","root","123456");$sql = "insert into  scan_card_picture (uuid,account_id,handle_state,created_time,status,from_account,accuracy,ifupdate) values";for($i=0; $i<100000; $i++){  $str = strrand(32);  $sql .="('".$str."','07:55:10','active','admin@qq.com','90',1),"; }$sql = substr($sql,0,strlen($sql)-1);var_dump($sql);if($pdo -> exec($sql)){  echo "插入成功!";  echo $pdo -> lastinsertid();}

转载于:https://my.oschina.net/u/3479443/blog/1558064

你可能感兴趣的文章
运营不需要人脉?
查看>>
ACK容器服务发布virtual node addon,快速部署虚拟节点提升集群弹性能力
查看>>
全方位解读Java反射(reflection)
查看>>
Spring Cloud Config服务器
查看>>
fprobe使用
查看>>
yum 安装rabbitMQ
查看>>
跟我学《JavaScript高程3》视频教程,下载地址
查看>>
GLSL变量
查看>>
使用nginx—搭建YUM仓库
查看>>
测试人员必学的软件快速测试方法(二)
查看>>
linux下以RPM包安装Oracle 客户端
查看>>
28. PowerShell -- 注册表操作
查看>>
artDialog-交互弹出插件_无效文章
查看>>
2015年后的九大企业级技术发展趋势
查看>>
搭建 android sdk环境
查看>>
LINUX常用的查看命令
查看>>
第14章 grep、sed、awk 正则表达式
查看>>
Game 游戏分类
查看>>
LAMP调优
查看>>
SCCM 2007 sp2 eva安装之一:sql server 2005安装及升级sp2
查看>>