sql >> Databáze >  >> RDS >> Mysql

Symfony:Doctrine data fixture:jak zacházet s velkým souborem csv?

Při vytváření velkých dávkových importů, jako je tento, je třeba dodržovat dvě pravidla:

  • Zakázat protokolování SQL:($manager->getConnection()->getConfiguration()->setSQLLogger(null); ), abyste zabránili velké ztrátě paměti.

  • Místo pouze jednou na konci proplachujte a čistěte často. Navrhuji přidat if ($i % 25 == 0) { $manager->flush(); $manager->clear() } uvnitř vaší smyčky, aby se vyprázdnil každých 25 INSERTů.

UPRAVIT: Poslední věc, na kterou jsem zapomněl:neuchovávejte své entity uvnitř proměnných, když je už nepotřebujete. Zde ve vaší smyčce potřebujete pouze aktuální entitu, která se zpracovává, takže neukládejte předchozí entitu do $coordinatesfrcity pole. Pokud v tom budete pokračovat, může to vést k přetečení paměti.



  1. Jak seskupit záznamy v databázi do 15minutových časových intervalů

  2. Vložte CreatedBy a CreatedOn do všech chybějících datových tabulek v SQL

  3. Jak mohu nastavit limit velikosti pro datový typ int v PostgreSQL 9.5

  4. Jak nainstalovat PostgreSQL 12 na Fedoru 33