我有一个问题,所以我的项目 10 数据库中有。每个数据库都有表 members
。在每个表 members
中,我有 200 万行,所以在 10 个数据库中大约有 2000 万行。我试过这样的:
foreach ($aDataBases as $database) {
$sSql = sprintf('SELECT nom,prenom,naiss FROM `%s`', $sTableName);
$rResult = Mysqli::query($sSql, $database);
while ($aRecord = $rResult->fetch_array(MYSQLI_ASSOC))
{
$aUsers['lastName'] = $aRecord['name'];
$aUsers['firstName'] = $aRecord['f_name'];
$aUsers['birthDate'] = $aRecord['birth'];
$aTotalUsers[] = $aUsers;
}
}
运行时出现错误 Allowed memory size of 134217728 bytes exhausted
。例如,如果我输入 select LIMIT 100
就完美了。你能帮帮我吗?
最佳答案
只需将您的代码放入一个循环中,然后进行 SQL 调用,比如说,每次调用 1000 个条目。循环直到打印完所有行。有些人会告诉你只是为了提高你的内存极限,但总有一个你无法通过的物理极限。
我不会为您编写代码,因为您是一名 PHP 程序员并且您明白了。不过,这是伪代码:
base = 0
while (rows = getrows(base,1000))
foreach row in rows
print row
base = base + 1000
关于php - 在mysql中选择大量插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33952970/