我有5,000个用于在线培训的用户帐户。从这些用户那里我需要更新90,000个类记录,基本上我必须遍历90,000条记录5,000次。幸运的是,这是一次更新。我现在正在做的太慢了,通过浏览器使用php来访问生产服务器上的数据库。问题是该进程在服务器上超时。我知道我可以更改该超时限制,但是我真的很想通过命令行而不是浏览器来运行该过程。
我可以在本地计算机上运行它,并且每秒通过90,0000个类记录进行4次传递。我认为可能需要6到7个小时才能完成。
我想在带有mysql的shell中运行以下命令,但是我所能找到的只是单行操作,而不是SELECT和UPDATE组合。我拥有数据库的连接和访问权限,只是不知道如何从命令行将SELECT和UPDATE放在一起。
$q1 = "SELECT * FROM accounts WHERE accountType = '1' ORDER BY pe_identifier";
$q2 = mysqli_query($dbcnx,$q1);
while ($row3 = mysqli_fetch_array($q2))
{
$a1 = "UPDATE classes SET company_id = '" . $row3["company_id"] . "' WHERE student_id = '" . $row3["pe_identifier"] . "'";
$a2 = mysqli_query($dbcnx,$a1);
}
预期结果是对类记录数据文件(90,000条记录)中的字段进行一次更新。
由于该过程花费的时间太长且超时,因此无法通过浏览器连接生产数据库。