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

Symfony:Doktrindataarmatur:hvordan håndterer man en stor csv-fil?

To regler, du skal følge, når du opretter store batchimporter som denne:

  • Deaktiver SQL-logning:($manager->getConnection()->getConfiguration()->setSQLLogger(null); ) for at undgå stort hukommelsestab.

  • Skyl og ryd ofte i stedet for kun én gang til sidst. Jeg foreslår, at du tilføjer if ($i % 25 == 0) { $manager->flush(); $manager->clear() } inde i din løkke, for at skylle hver 25. INSERT.

EDIT: En sidste ting, jeg glemte:Hold ikke dine entiteter inde i variabler, når du ikke har brug for dem længere. Her, i din loop, har du kun brug for den aktuelle enhed, der behandles, så gem ikke tidligere entitet i en $coordinatesfrcity array. Dette kan føre til hukommelsesoverløb, hvis du bliver ved med at gøre det.



  1. PHP MYSQL:instant select + insert

  2. Undslip rå SQL-forespørgsler i Laravel 4

  3. Indsæt med Hibernate native-forespørgsel virker ikke for java.util.Date

  4. Entity Framework:kort varchar til DateTime-egenskaben