我正在编写一个 PHP 脚本,它将向表中大量插入数据。
我正在使用这样的准备语句:
$sql = "INSERT INTO clans(id, clanid, name, badge, status, playercount, score, requiredtrophies, warswon, warslost, warstied, location,warfrequency, exp, level, description, playerjson, lastupdate)
VALUES ('', ?, ?, ?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?, ?, ?, now())";
$stmt = $con->prepare($sql); //prepare update statement
$stmt->bind_param('ssisiiiiiissiiss',$clanid,$name,$badge,$status,$playercount,$score,$requiredtrophies,$warswon,$warslost,$warstied,$location,$warfrequency,$exp,$level,$description,$playerarray);
之后我有一个 while 循环将执行大量查询(数十万甚至几百万!)并且其中的数据非常大! playerjson 是一个巨大的 json 数组。
数据将从网站 API 的 JSON 响应中接收。
我查看了事务,但它们以 502 Bad Gateway 告终,我认为这是因为内存中的数据过多。这不是超时问题,因为我在 nginx 和 ini_set
那么批量插入大量数据最快的方法是什么?
最佳答案
最快的方法是 LOAD DATA INFILE。考虑创建一个文件!
但是在你的情况下创建一个临时表
create table clans_temp like clans;
并插入其中。然后在一个查询中更新原始表并删除临时表。
据我所知,考虑到问题的限制,这是最快的方法。
关于php - MySqli 插入海量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33347452/