Mysql
 sql >> база данни >  >> RDS >> Mysql

Symfony:Доктрина за данни:как да се справя с голям csv файл?

Две правила, които трябва да следвате, когато създавате големи партиди за импортиране като това:

  • Деактивирайте регистрирането на SQL:($manager->getConnection()->getConfiguration()->setSQLLogger(null); ), за да избегнете огромна загуба на памет.

  • Промивайте и почиствайте често, вместо само веднъж в края. Предлагам ви да добавите if ($i % 25 == 0) { $manager->flush(); $manager->clear() } вътре във вашия цикъл, за да измивате на всеки 25 INSERT.

РЕДАКТИРАНЕ: Едно последно нещо, което забравих:не дръжте обектите си в променливи, когато вече не се нуждаете от тях. Тук, във вашия цикъл, имате нужда само от текущия обект, който се обработва, така че не съхранявайте предишен обект в $coordinatesfrcity масив. Това може да ви доведе до препълване на паметта, ако продължите да правите това.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. намерете причините за блокиране на mysql

  2. Изберете всички, където полето съдържа низ, разделен със запетая

  3. EF Core 2.0 Identity – Добавяне на свойства за навигация

  4. Решение за намиране на дублирани записи, включващи ППИ и взаимоотношения родител-дете

  5. Твърде много връзки, използващи Hibernate и mysql