【发布时间】:2017-07-24 22:53:59
【问题描述】:
(使用 pdo)
所以我有一个要从中获取的几乎 1 GB 大小的表。同时,我正在处理我获取的数据,然后将其插入到多个其他表中。我的代码如下所示:
$stmt = $pdo->query("SELECT * FROM foo");
$stmt2 = $pdo->prepare("INSERT INTO bar (col1) VALUES (?)");
$stmt3 = //...etc
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$toInsert = doStuff($row['baz']);
$stmt2->execute(array($toInsert));
//etc.
}
每当我在整个表上运行脚本时,它都会耗尽内存。我可以给它更多,但我觉得有更好的方法。
我认为无缓冲查询可能会解决问题,但我需要同时运行这些查询。
【问题讨论】:
-
INSERT INTO bar (col1) (SELECT baz FROM foo) -
做批处理,一次100条记录,做一个日志表,以防任何特定行出现问题。