IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Import massif via Doctrine


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 120
    Par défaut Import massif via Doctrine
    Bonjour tout le monde,

    Je voudrais savoir comment faire pour importer un volume très important de données en ligne de commande, via Doctrine.
    Je dois importer plus de 2 millions de lignes en base de données, mais PHP craque au bout de 120 000 enregistrements effectués.
    J'ai augmenté la memory_limit dans le fichier ini à 2048Mo, mais cela ne semble pas suffire.

    Compte-tenu q'uil s'agit d'un import qui se fera régulièrement avec presque autant de données, je ne peux pas mettre un memory_limit à -1.

    Niveau code, je fais un je fais un "persist" à chaque tour de boucle, mais je "flush" au bout de 10 000 enregistrements (avec un clean à la suite).

    Auriez-vous des conseils pour que je parvienne à importer l'ensemble de ce documents ?

    Merci par avance pour votre aide

    Salutations

  2. #2
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    YOOOOOOOO MAAAAAAAAAAAAAAAN RASTAFARIIIIIIIIIIIIIIIIIIIIIIII

    quand il s'agit de gros volume, il ne faut plus utiliser les objets mais écrire des requêtes natif SQL.
    ainsi tu va gagner en mémoire et en rapidité...

  3. #3
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 133
    Par défaut
    Bonjour,

    Mon j'opterais pour la même structure qu'un emailing, c.a.d. un traitement par lot.
    Si en plus tu dis que ça doit se faire tous les jours ça s'y prête d'autant plus.

    Le principe est que chaque appel au script (généralement fait via un cron) :
    - vérifie si l'appel au script précédent est bien terminé
    - vérifie s'il y a encore des lignes à traiter
    - traite son lot de ligne

    Il faut pour se faire s'aider d'au moins une table qui va gérer différents statut et t'indiquer à quel ligne tu t'es arrêté dans ton fichier.

    Cdt

    PS : je suis parti du principe que tu avais un fichier d'export, à adapter donc selon la nature de tes données

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    Bonjour,

    As tu lu la doc doctrine concernant les imports massif?
    http://doctrine-orm.readthedocs.org/...rocessing.html
    en gros faire un flush, suivi d'un clear à intervalle régulier

    de plus il faut lancer ta commande en environnement de prod (--env=prod)

    passer par des requetes SQL pourrait éventuellement accéler les choses mais à condition d'utiliser
    -> les requetes préparés
    -> les transactions
    (ces 2 choses étant déjà gérés par Doctrine ORM)

Discussions similaires

  1. Importation MySQL via DTS (ODBC ?)
    Par gderenne dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 26/07/2007, 19h25
  2. Pb Import données via BCP
    Par facto dans le forum Outils
    Réponses: 4
    Dernier message: 07/03/2006, 13h58
  3. [ 10g] import/export via datapump
    Par silverfab95 dans le forum Oracle
    Réponses: 7
    Dernier message: 06/02/2006, 12h19
  4. Import massif/table externe et real
    Par Eric Sibert dans le forum Firebird
    Réponses: 7
    Dernier message: 30/08/2005, 10h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo