sql >> Database >  >> RDS >> Mysql

Symfony :Doctrine data armatuur :hoe om te gaan met een groot csv-bestand?

Twee regels die u moet volgen wanneer u op deze manier grote batchimports maakt:

  • Schakel SQL-logboekregistratie uit:($manager->getConnection()->getConfiguration()->setSQLLogger(null); ) om enorm geheugenverlies te voorkomen.

  • Spoel en wis regelmatig in plaats van slechts één keer aan het einde. Ik stel voor dat je if ($i % 25 == 0) { $manager->flush(); $manager->clear() } in je lus, om elke 25 INSERT's te spoelen.

BEWERKEN: Een laatste ding dat ik ben vergeten:bewaar je entiteiten niet in variabelen als je ze niet meer nodig hebt. Hier, in je lus, heb je alleen de huidige entiteit nodig die wordt verwerkt, dus sla de vorige entiteit niet op in een $coordinatesfrcity reeks. Dit kan ertoe leiden dat je geheugen overloopt als je dat blijft doen.



  1. XML-uitvoer van MySQL

  2. Jetty 7 + MySQL-configuratie [java.lang.ClassNotFoundException:org.mortbay.jetty.webapp.WebAppContext]

  3. MySQL:verwijder alle rijen, niet alleen bijgewerkt

  4. Hoe selecteer ik mysql-rij-ID voor WHERE-clausule op UPDATE, INSERT, DELETE via php?