我正在开发一个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
那么批量插入大量数据的最快方法是什么?
答案 0 :(得分:0)
最快的方式是LOAD DATA INFILE。考虑创建一个文件!
但是在你的情况下创建一个临时表
create table clans_temp like clans;
并插入其中。然后在一个查询中更新原始文件并删除临时表。
据我所知,鉴于问题的限制,这是最快捷的方式。