Mysql
 sql >> Base de données >  >> RDS >> Mysql

Symfony :Doctrine data fixture :comment gérer un gros fichier csv ?

Deux règles à suivre lorsque vous créez des importations volumineuses comme celle-ci :

  • Désactiver la journalisation SQL :($manager->getConnection()->getConfiguration()->setSQLLogger(null); ) pour éviter d'énormes pertes de mémoire.

  • Rincer et nettoyer fréquemment au lieu d'une seule fois à la fin. Je vous suggère d'ajouter if ($i % 25 == 0) { $manager->flush(); $manager->clear() } à l'intérieur de votre boucle, pour vider tous les 25 INSERTs.

MODIF : Une dernière chose que j'ai oubliée :ne gardez pas vos entités dans des variables lorsque vous n'en avez plus besoin. Ici, dans votre boucle, vous n'avez besoin que de l'entité actuelle en cours de traitement, donc ne stockez pas l'entité précédente dans un $coordinatesfrcity déployer. Cela pourrait vous conduire à un débordement de mémoire si vous continuez à le faire.