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

Requêtes MySQL Discussion :

plusieurs insert en une requête...


Sujet :

Requêtes MySQL

Vue hybride

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 138
    Par défaut plusieurs insert en une requête...
    Bonjour,

    Tout est dans le sujet: je voudrais exécuter une série d'insert en 1 seule fois.

    c'est-à-dire que je rempli une chaine de caractère de requêtes. Et j'ai essayé d'exécuter mysql_query ($req) mais il me mets l'erreur disant que mon serveur sql est parti... (véridique ! ) alors je pense donc que c'est du au fait que j'ai plusieurs requête insert dans ma chaine.

    Je voudrais faire cela parce que j'ai beaucoup de requête insert à fiare dand un script php, et du coup, au bout de 30s, ben le serveur me renvoie une erreur disant que le script met trop de temps à s'exécuter... (quand je dis beaucoup d'insert, c'est pas 100... mais plutôt 100000 !)

    Auriez vous une solution à cela ? (mise à part générer un fichier )

    merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 225
    Par défaut
    as tu essayé une boucle en php ??
    n'oublie pas de réinitialiser ton curseur car je pense qu'au bout d'un moment ton pseudo sgbd ne va pas s'y retrouver...

    NL

  3. #3
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Par défaut Re: plusieurs insert en une requête...
    Il faut faire plusieurs mysql_query (un par requête).

    Il me semble qu'il est impossible de faire plusieurs requêtes dans un mysql_query, séparées par des ';', ce qui est logique vu que chacune de ces requête renvoie quelque chose (résultat de la requête, false en cas d'erreur, etc.).

    Dans phpMyAdmin, c'est en fait une fonction spéciale qui fait plusieurs appels à mysql_query...
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 138
    Par défaut
    oui justement je faisais au début dans une boucle. donc genre 30000 ca le faisait mais j'ai agrandé mon affaire et dépassé 100000 c'est fini :s

    C'est quoi cette histoire de curseur... si ça se trouve c'est cela.

    tu veux parler du curseur de base de données (dans ce cas jamais entendu parlé) ou du curseur de ma chaine de caractère (à la rigueur...)$

    edit pcaboche: Mais bien sur, t'as raison en fait, carrément, j'ai même pas fait gaffe, en effet, mysql_query renvoie TRUE ou FALSE... ok, donc faut trouver une autre méthode... grrrr il n'y a pas une fonction mysql qui permet de faire plusieurs requêtes ? j'ai cherché je n'en vois pas. Au pire, je génére un fichier et je fais à la main. pas gênant, mais j'aurai bien voulu faire cela directement en fait.

    merci

  5. #5
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Saluton,
    Tu peux créer une table, la charger avec LOAD DATA, puis faire INSERT ...SELECT comme décrit dans la doc
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  6. #6
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Par défaut
    Citation Envoyé par maniaco_jazz
    il n'y a pas une fonction mysql qui permet de faire plusieurs requêtes ?
    Non, il n'y en a pas. phpMyAdmin a dévelopé ses propres fonctions (PMA_mysql_query je crois) qui décompose les scripts en plusieurs requêtes et rajoute des LIMITE 0,30 en fin de SELECT, mais c'est tout!

    La génération d'un fichier est peut-être plus simple, après tu fais un LOAD DATA INFILE et le tour est joué !
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  7. #7
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 673
    Par défaut
    tu peux faire plusieurs INSERT en une seule requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO Table VALUES (1, 5, 0, 2, 1111480793, 1112688385, NULL, NULL),
    (2, 5, 0, 2, 1111481553, 1111483336, NULL, NULL),
    (50, 9, 3, 1, 1131383124, NULL, 1131383124, NULL),
    (51, 9, 3, 1, 1131383134, NULL, 1131383129, NULL),
    (52, 46, 3, 1, 1131533693, NULL, 1131533522, NULL);
    http://dev.mysql.com/doc/refman/5.0/fr/insert.html

  8. #8
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Par défaut
    Dans ce cas là, le problème reste entier: avec 100000 enregistrements, ça met trop de temps à s'exécuter et le serveur MySQL est "parti" (il en a eu marre, il s'est pris des vacances )
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  9. #9
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 673
    Par défaut
    Citation Envoyé par pcaboche
    Dans ce cas là, le problème reste entier: avec 100000 enregistrements, ça met trop de temps à s'exécuter et le serveur MySQL est "parti" (il en a eu marre, il s'est pris des vacances )
    ce n'est pas sur, puisque cela se passe en une seule requete, c'est possible de gagner du temps comme avec l'utilisation de LOAD DATA
    il y a qu'un seule chose à faire pour savoir si ça fonctionne : on laisse maniaco_jazz tester

  10. #10
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Par défaut
    Citation Envoyé par mathieu
    il y a qu'un seule chose à faire pour savoir si ça fonctionne : on laisse maniaco_jazz tester
    Tout à fait d'accord !
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

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

Discussions similaires

  1. plusieurs comptes dans une requête
    Par sopcc dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 16/01/2007, 10h50
  2. Plusieurs SUM dans une requête
    Par pj69100 dans le forum Requêtes
    Réponses: 6
    Dernier message: 02/01/2007, 10h34
  3. Sous-requête excutée plusieurs fois dans une requête
    Par sheridan31 dans le forum Oracle
    Réponses: 8
    Dernier message: 03/07/2006, 16h18
  4. [MySQL] Sélection de plusieurs lignes en une requête
    Par kalash_jako dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/05/2006, 19h43
  5. Plusieurs jointures dans une requête sql
    Par Pero dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/09/2005, 20h59

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