Mysql
 sql >> Database >  >> RDS >> Mysql

Symfony:Doctrine Data Fixture:come gestire file CSV di grandi dimensioni?

Due regole da seguire quando crei grandi importazioni batch come questa:

  • Disabilita registrazione SQL:($manager->getConnection()->getConfiguration()->setSQLLogger(null); ) per evitare un'enorme perdita di memoria.

  • Sciacquare e pulire frequentemente invece che solo una volta alla fine. Ti suggerisco di aggiungere if ($i % 25 == 0) { $manager->flush(); $manager->clear() } all'interno del tuo loop, per svuotare ogni 25 INSERT.

MODIFICA: Un'ultima cosa che ho dimenticato:non mantenere le tue entità all'interno delle variabili quando non ne hai più bisogno. Qui, nel tuo ciclo, hai solo bisogno dell'entità corrente che viene elaborata, quindi non memorizzare l'entità precedente in un $coordinatesfrcity Vettore. Questo potrebbe portarti a un overflow di memoria se continui a farlo.