php mysql 读取大_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();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值