【发布时间】:2016-01-13 08:26:55
【问题描述】:
我需要从 csv 文件中导入大量数据(大约 1m 条记录)。 为了避免内存泄漏,我尝试从学说文档中批量插入:
$batchSize = 20;
for ($i = 1; $i <= 10000; ++$i) {
//code
$em->persist($user);
if (($i % $batchSize) === 0) {
$em->flush();
$em->clear(); // Detaches all objects from Doctrine!
}
}
$em->flush(); //Persist objects that did not make up an entire batch
$em->clear();
问题是我的插入包含“多对一”关系,并且每次我使用 clear() 对象时都会出现来自该关系的重复条目。
是否有可能分离实体并避免重复?
【问题讨论】:
-
附带说明:在进行大批量操作时,始终建议不要使用 Doctrine。您应该将 PDO 用于此类任务。
标签: php symfony doctrine-orm many-to-one