Insérer 700 tuples avec une boucle while

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Meeuuuhhh, 22 Juillet 2008.

  1. Meeuuuhhh
    Meeuuuhhh WRInaute passionné
    Inscrit:
    8 Janvier 2007
    Messages:
    1 498
    J'aime reçus:
    0
    Bonjour,

    Voilà, j'ai 700 enregistrements dans une première table, je veux les passer dans une deuxième table en y ajoutant des informations d'une troisième table, via une clef étrangère entre les tables 1 et 3.

    J'ai écrit un petit script et j'ai ajouté un compteur pour voir le nombre de tuples enregistrés.

    Le compteur s'arrête à 507. Ca c'est normal, car la clef étrangère est une suite varchar et certains caractères sont encodés dans une des deux tables. Je peux corriger le problème facilement.

    Mais ce que je ne comprend pas, c'est ça :
    Le compteur du script s'arrête à 507, ce qui signifie donc que 507 instruction INSERT into ont été effectuées, sur les 700 souhaitées.

    Mais dans la table censée réceptionner les données, je n'ai que 253 enregistrement. Même des champs dont la clef étrangère ne comporte aucun caractère spécial ne sont pas récupérés et insérés.



    Je me dis que c'est parce que la base de donnée ne peut pas traiter autant d'enregistrement en une fois, mais en fait j'en doute :?

    D'où vient le problème d'après vous ?



    Merci d'avance
     
  2. raljx
    raljx WRInaute passionné
    Inscrit:
    10 Juillet 2006
    Messages:
    2 022
    J'aime reçus:
    0
    ben peut etre qu'avec le script d'insert. on pourra mieux voir ;)
     
  3. Bool
    Bool WRInaute passionné
    Inscrit:
    26 Février 2004
    Messages:
    1 543
    J'aime reçus:
    0
    Un truc me chiffonne quand même : toutes les infos sont en base de données dans 2 tables différentes, et tu passes par une boucle PHP pour créer la troisième table... t'es sûr de ton coup là ? Souvent ce n'est pas nécessaire du tout.
     
  4. Meeuuuhhh
    Meeuuuhhh WRInaute passionné
    Inscrit:
    8 Janvier 2007
    Messages:
    1 498
    J'aime reçus:
    0
    Ouaip, j'y ai pensé mais je pense pas que te donnera grand chose, vu qu'il bug pas.
    Je pense que le problème vient d'ailleurs.

    Est-ce trop, une boucle while d'insert sur 700 tuples (ou 500 et quelques, pour le moins) ?

    Code:
    <?php
    
    $affiche_titre=
    "SELECT 
    mot.libelle AS libelleMot,
    mot.contenu AS contenuMot,
    mot.id AS idMot,
    ibf_topics.tid AS tid
    FROM 
    mot, ibf_topics
    WHERE mot.libelle=ibf_topics.title 
     ";
    $resultatTitle = mysql_query("$affiche_titre") OR die(mysql_error());
    $compteur=1;
    while($R = mysql_fetch_array($resultatTitle))
    {
    $tid=$R['tid'];
    $idMot=$R['idMot'];
    $libelleMot=$R['libelleMot'];
    $contenuMot=$R['contenuMot'];
    
    $insert="INSERT INTO `insertionBD` 
    (
    `tid`,`libelle`,`mot`,`idMot`
    ) 
    VALUES 
    (
    '$tid','$libelleMot','$contenuMot','$idMot'
    )";
    $valid=mysql_query($insert);
    $compteur++;
    echo "$compteur, "
    ;}
    
    echo" <p> OK";
    
    ?>

    **edit**

    Je vais refaire un test supplémentaire en affichant dans la boucle les id des tuples censés être insérés, pour ensuite vérifier s'ils le sont effectivement dans la table censée les réceptionner.
     
  5. raljx
    raljx WRInaute passionné
    Inscrit:
    10 Juillet 2006
    Messages:
    2 022
    J'aime reçus:
    0
    je fais des while avec + de 500 000 entrées - 500 ou 700 insert c'est nada pour un serveur mysql.

    Petit detail : Pourquoi mets tu le compteur a 1 au depart sachant que tu l'incrementes juste avant de l'afficher ?:wink:

    essaye de mettre un if (!$valid) {echo $affiche_titre."\n";} pour voir si certains insert ne passent pas dans le cas ou tu n'afficherais pas les erreurs (ca m'est arrivé :oops: )

    Sinon debug au max .... et tiens nous au courant ;)
     
  6. Meeuuuhhh
    Meeuuuhhh WRInaute passionné
    Inscrit:
    8 Janvier 2007
    Messages:
    1 498
    J'aime reçus:
    0
    Oui, justement, je fais un test avant de le faire, mais avec un update...

    Je vais tester ça, merci.
     
  7. rudddy
    rudddy WRInaute passionné
    Inscrit:
    1 Août 2007
    Messages:
    2 125
    J'aime reçus:
    0
    ca sent le bug du manque d'addslashes à plein nez ...
     
  8. Meeuuuhhh
    Meeuuuhhh WRInaute passionné
    Inscrit:
    8 Janvier 2007
    Messages:
    1 498
    J'aime reçus:
    0
    Ca se pourrait sur certaines, en effet, bien vu.

    Mais sur certaines n'ont pas de ' et pourtant elles n'y sont pas. J'ai pas encore tester le truc de raljx.
     
  9. Meeuuuhhh
    Meeuuuhhh WRInaute passionné
    Inscrit:
    8 Janvier 2007
    Messages:
    1 498
    J'aime reçus:
    0
    Ok ok, alors en effet c'était un problème d'addslashes.

    En fait, le non-addshshage ne gênait pas au niveau du titre, mais au niveau du contenu, mais mes modestes neurones avait omis ce champ dans leur raisonnement défaillant.


    Là tout est inséré, en force. Du moins il en manque encore 200, mais ce doit être un problème d'encodage d'accent cette fois.

    Bien vu pour le test de raljx, ça m'a aidé à trouver le bug.
    Bug facile du reste, mais ce sont souvent les plus simples que l'on voit le moins...


    Topic qui reste ouvert, m'étonnerait pas qu'un autre problème se présente...

    Encore merci pour vos réponses, ceci dit.
     
  10. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    moi je ferais afficher la requête au cas où l'insert ne fonctionne pas. Et je testerais ensuite cette requête avec phpmyadmin, pour voir d'où vient le problème
     
  11. e-kiwi
    e-kiwi WRInaute accro
    Inscrit:
    23 Décembre 2003
    Messages:
    13 198
    J'aime reçus:
    1
    mot.libelle=ibf_topics.title


    si l'un des deux enregistrements n'existe pas, tu "perd" l'autre
     
  12. OTP
    OTP WRInaute accro
    Inscrit:
    16 Décembre 2005
    Messages:
    14 581
    J'aime reçus:
    3
    Manque un topic de best-of des néologismes des webmasters !
    Joli celui-là, à caser dans une conversation avec sa boulangère... ;)
     
  13. BadProcESs
    BadProcESs WRInaute passionné
    Inscrit:
    28 Juillet 2003
    Messages:
    1 821
    J'aime reçus:
    0
    Heu... Alors ca ca dépend ce que tu insère.

    Si c'est de simplement champs texte d'une longueur de 255 caractères ca passe bien, par contre, si il faut que tu insère 5 ou 10 BLOBS / ligne, tes 500 000 inserts vont faire faire la tronche à ton serveur MySQL ! ;)
     
  14. raljx
    raljx WRInaute passionné
    Inscrit:
    10 Juillet 2006
    Messages:
    2 022
    J'aime reçus:
    0
    Il monte en charge et rame c'est sur mais ne tombe pas.
     
  15. BadProcESs
    BadProcESs WRInaute passionné
    Inscrit:
    28 Juillet 2003
    Messages:
    1 821
    J'aime reçus:
    0
    Tu m'a l'air bien sûr de toi ! :D
    Des preuves (résultats de test load par exemple) ?

    Dans ce cas précis, rien de plus fiable qu'un Oracle ;)
     
  16. raljx
    raljx WRInaute passionné
    Inscrit:
    10 Juillet 2006
    Messages:
    2 022
    J'aime reçus:
    0
    @ BadProcESs --> ci-joint :)
    [​IMG]

    Un insert de 547 000 enregistrements sur une table contenant 11 tables avec VARCHAR|BIGTEXT|INT(10) hier a minuit ... quelques update cet am et un gros insert ce soir.
     
  17. BadProcESs
    BadProcESs WRInaute passionné
    Inscrit:
    28 Juillet 2003
    Messages:
    1 821
    J'aime reçus:
    0
    Pas mal :)

    Ca tourne sur quoi comme config par curiosité ?
     
  18. Robinson
    Robinson WRInaute passionné
    Inscrit:
    26 Octobre 2005
    Messages:
    1 636
    J'aime reçus:
    0
    Boarfff les insert, ce n'est pas ce qui consomme le plus de processus... même loin de là. ça pourrait tourner en boucle jusqu'à plus de mémoire disque lol (bon j'exagère ptet un peu mais si qq1 veut tester... ^^)
     
  19. julienr
    julienr WRInaute impliqué
    Inscrit:
    5 Août 2003
    Messages:
    939
    J'aime reçus:
    2
    :!:
    sur ma dedibox v1 quand je restore le dump de ma database (soir environ 200 000 lignes) ca se passe en moins d'une minute !!!
    inutile de dire que le load lissé sur la journée tu vois que dalle :)
     
  20. raljx
    raljx WRInaute passionné
    Inscrit:
    10 Juillet 2006
    Messages:
    2 022
    J'aime reçus:
    0
    Oui mais seulement dans le cas d'un dump :wink:
     
  21. julienr
    julienr WRInaute impliqué
    Inscrit:
    5 Août 2003
    Messages:
    939
    J'aime reçus:
    2
    il me semble que le script d'export de base, optimise juste en groupant les insert par paquet et que c'est drôlement efficace et donc rien n'empêche de faire pareil dans ses propres script...
     
Chargement...
Similar Threads - Insérer 700 tuples Forum Date
Balise méta description : faut-il insérer son mot-clé ? Débuter en référencement 2 Juillet 2022
Comment insérer adsense dans un article SPIP ? Développement d'un site Web ou d'une appli mobile 6 Mars 2021
Insérer 1 image google dans une page Développement d'un site Web ou d'une appli mobile 26 Avril 2020
Insérer mes annonces AdSense où je veux AdSense 21 Août 2019
insérer des étoiles sur sa balise title Débuter en référencement 16 Juillet 2018
Comment insérer un fil d'ariane Débuter en référencement 15 Juillet 2017
widget sondage pour insérer sur site jimdo Développement d'un site Web ou d'une appli mobile 3 Mars 2017
Insérer des clauses dans un devis pour un sous traitant adword ? AdWords 9 Décembre 2016
Insérer un texte dans la plupart de mes articles Administration d'un site Web 3 Janvier 2016
Questions sur les données à insérer pour un article Wordpress Rédaction web et référencement 16 Juillet 2015
Insérer un Logo avec un PlugWordpress Développement d'un site Web ou d'une appli mobile 30 Avril 2015
Inserer un code JavaScript sous Wordpress Développement d'un site Web ou d'une appli mobile 19 Mars 2015
Comment insérer un lien cliquable dans la méta-description d'une page ? Débuter en référencement 5 Mars 2015
insérer adsense sur wordpress, plug in ou pas ? AdSense 21 Mai 2014
insérer image dans un blog overblog Administration d'un site Web 5 Juillet 2013
[WP] Inserer une class automatiquement dans une image Développement d'un site Web ou d'une appli mobile 28 Février 2013
Insérer image tableau PHP Développement d'un site Web ou d'une appli mobile 18 Février 2013
insérer une pub entre deux lignes Développement d'un site Web ou d'une appli mobile 8 Janvier 2013
Insérer une image en pied de page Développement d'un site Web ou d'une appli mobile 2 Janvier 2013
Pb pour insérer une gallerie dans Wordpress avec Custom Post Types Développement d'un site Web ou d'une appli mobile 26 Novembre 2012