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

Zend_Db PHP Discussion :

Insertion de plusieurs valeurs [ZF 1.9]


Sujet :

Zend_Db PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 61
    Par défaut Insertion de plusieurs valeurs
    Bonjour,

    Je suis un nouvel utilisateur de Zend et je me pose la question suivante : Comment insérer plusieurs lignes à la fois dans une table ?

    J'ai essayé une boucle avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $this->db = new Zend_Db_Adapter_Pdo_Sqlite(array('dbname'=>'t'));
    while($ligne = lignedecsv){
      //En supposant que $ligne soit un tableau avec les clés qui vont bien
      $db->insert('table', $ligne);
    }
    Mais c'est extrêmement lent (je manipule jusqu'à 300mo de données par fichier...).

    J'ai essayé de construire la requête "à la main" sous la forme INSERT INTO Table(c1, c2) VALUES (1,2), (2,3), ... mais j'obtiens un segfault (je ne savais pas que ça existait en PHP). Pour information, j'utilise SQLite.

    Je voulais savoir s'il y avait une solution native à Zend_DB pour insérer plusieurs lignes à la fois ou si quelqu'un aurait une correction pour le segfault qui ne demande pas d'avoir les droits d'admin...

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 61
    Par défaut Résolu
    Après avoir pas mal cherché, j'ai découvert que SQLite limitait le texte des transactions à 1 000 000 bytes. Comme mes requêtes faisaient plus... ça ne marchait pas.

    J'ai trouvé une méthode permettant d'accélérer grandement l'ajout de lignes dans la base (un insert prend 1ms).

    Il suffit de placer avant la boucle d'insert :
    et après :
    Voilà, j'espère que ça aidera quelqu'un

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/05/2015, 15h31
  2. insert plusieurs valeurs
    Par vivabarça dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/07/2011, 17h12
  3. [ZF 1.11] Insertion de plusieurs valeurs
    Par geforce dans le forum Zend_Db
    Réponses: 3
    Dernier message: 15/07/2011, 10h43
  4. [MySQL] Insertion de plusieurs valeurs dans un même champ de MySQL
    Par Monsieur K dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 20/09/2009, 15h50
  5. Insérer plusieurs valeurs dans rq INSERT
    Par Guennec.Yannick dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/03/2007, 12h52

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