sql >> Base de Datos >  >> RDS >> Mysql

Symfony:accesorio de datos de Doctrine:¿cómo manejar un archivo csv grande?

Dos reglas a seguir cuando crea grandes importaciones por lotes como esta:

  • Deshabilitar registro de SQL:($manager->getConnection()->getConfiguration()->setSQLLogger(null); ) para evitar una gran pérdida de memoria.

  • Enjuague y limpie con frecuencia en lugar de solo una vez al final. Le sugiero que agregue if ($i % 25 == 0) { $manager->flush(); $manager->clear() } dentro de su ciclo, para vaciar cada 25 INSERTOS.

EDITAR: Una última cosa que olvidé:no mantengas tus entidades dentro de variables cuando ya no las necesites. Aquí, en su ciclo, solo necesita la entidad actual que se está procesando, así que no almacene la entidad anterior en un $coordinatesfrcity formación. Esto podría llevarte a un desbordamiento de memoria si sigues haciéndolo.