Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Symfony:Doctrine Data Fixture:Wie geht man mit großen CSV-Dateien um?

Zwei Regeln, die Sie befolgen müssen, wenn Sie große Stapelimporte wie diese erstellen:

  • SQL-Protokollierung deaktivieren:($manager->getConnection()->getConfiguration()->setSQLLogger(null); ), um einen großen Speicherverlust zu vermeiden.

  • Häufig spülen und reinigen statt nur einmal am Ende. Ich schlage vor, Sie fügen if ($i % 25 == 0) { $manager->flush(); $manager->clear() } innerhalb Ihrer Schleife, um alle 25 INSERTs zu leeren.

BEARBEITEN: Eine letzte Sache, die ich vergessen habe:Behalten Sie Ihre Entitäten nicht in Variablen, wenn Sie sie nicht mehr benötigen. Hier benötigen Sie in Ihrer Schleife nur die aktuelle Entität, die verarbeitet wird, speichern Sie also nicht die vorherige Entität in einem $coordinatesfrcity Reihe. Dies könnte zu einem Speicherüberlauf führen, wenn Sie so weitermachen.