开发者社区> renwww> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

MySQL+PHP大文件读取和写库

简介: mysql+php 数据库存储大文件
+关注继续查看

大文件内容写入数据库

问题和困难

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 table (fild)  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();
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【PHP秒杀系统】第一篇 环境准备即MySQL的封装
【PHP秒杀系统】第一篇 环境准备即MySQL的封装
33 0
PHP处理MySQL关联查询
什么关联查询? a)在MySQL中的Select语句中,我们经常会有复杂的业务需要使用join子语句,包括left join、right join、inner join、left outer join、right outer join、full join b)那么使用以上几种方式进行表查询的时候、对数据库的压力是很大的,怎么个大法呢,我们来测试一下: i.首先我们先搞一些数据 class表200w数据 user表 40w数据 ii.我们接下来查询15个班级下面的所有学生
68 0
MacOs M1 芯片分布式搭建 Nginx+PHP+MySQL和多站点域名访问
一、安装Nginx 问题:Mac 在安装nginx之前记得把原本的apache2给卸载删除了,要不然后期会出现端口号被占用,或者有时候nginx用不了
129 0
PHP 和 MySQL 的合作方式
PHP 和 MySQL 的合作方式
38 0
PHP中MySQL操作
本次使用的demo是MySQL的示例数据库employees,点击下载地址,注意在导入的时候,在employees.sql文件中,将source改成你当前的目录。
39 0
centos下 Apache、php、mysql默认安装路径
apache: 如果采用RPM包安装,安装路径应在 /etc/httpd目录下 apache配置文件:/etc/httpd/conf/httpd.conf Apache模块路径:/usr/sbin/apachectl web目录:/var/www/html 如果采用源代码安装,一般默认安装在/usr/local/apache2目录下 php: 如果采用RPM包安装,安装路
3117 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
MySQL 5.7让优化更轻松
立即下载
PostgresChina2018_张启程_为什么我们抛弃MongoDB和MySQL,选择PgSQL
立即下载
好的 MySQL 兼容可以做到什么程度
立即下载