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

PHP & Base de données Discussion :

meilleure solution pour alimenter une bdd mysql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 62
    Points
    62
    Par défaut meilleure solution pour alimenter une bdd mysql
    Salut tout le monde

    disant que j'ai un fichier xml (très volumineux) que je dois en extraire des données et les mettres dans une base de données. jusqu'au là ya pas de prob, juste une question de performance, vous croyez qu'il vaut mieux remplire la bdd ligne par ligne en utilisant un insert into valuesou bien tout mettre dans un fichier puis remplire la bdd par un LOAD DATA. ??

    j'espère que j'étais claire, A vous les

  2. #2
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Salut,
    LOAD DATA INFILE est censée être plus rapide, dixit la doc. (plus d'infos)
    Si t'as juste à le faire une fois, le choix de l'une ou l'autre solution n'a pas vraiment d'importance (enfin ça dépend quand même de ta charge serveur)
    mysqlimport restant a priori la meilleure solution si tu as accès au serveur.
    Bye
    Vive les roues en pierre

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 62
    Points
    62
    Par défaut
    Merci pour t'as réponse si rapide, ban j'ai utilisé LOAD DATA INFILE, juste je crois que j'ai un petit problème avec mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if(file_exists("etudeData"))
    	unlink("etudeData");
    $EtudeFile = fopen("etudeData", "a+");
     
    fputs($tab[1].';'.$tab[2].';'.$tab[3].';'.$tab[4].';'.$tab[5].';'.$tab[6].';'.$tab[7].';'.
               $tab[8].';'.$tab[9].';'.$tab[10].';'.$tab[11].';'.$tab[12]. "\n");
     
    $sql = "LOAD DATA LOCAL INFILE `etudeData` INTO TABLE etude_cell FIELDS TERMINATED BY `;`";
    echo $sql ."\n";  
    $req = new requete($site->db, $sql);
    fclose($EtudeFile);
    le fichier est bien remplie mais la requête ne s'exécute pas !!??

  4. #4
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    T'as pas moyen d'afficher les erreurs SQL avec l'API que t'utilises via la classe 'requete' ? Sinon t'es sûr que quand tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = new requete($site->db, $sql);
    ça exécute la requête et qu'il faut pas faire un truc du style :
    après ?

    Pour info tu peux remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(file_exists("etudeData"))
    	unlink("etudeData");
    $EtudeFile = fopen("etudeData", "a+");
    par 1 seule ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $EtudeFile = fopen("etudeData", "w+");
    Vive les roues en pierre

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 62
    Points
    62
    Par défaut
    oui je suis sûr car quand j'utilise le insert into sur le même code il marche impeccable

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 62
    Points
    62
    Par défaut
    donc apparemment tt le bordel est dans la clause $sql je crois que j'ai oublier quelque chose là

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 62
    Points
    62
    Par défaut
    j'ai essayé la même requête en ligne de commande et il marche impp par contre depuis le fscripte php c pas le cas !!??

  8. #8
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Il faudrait que t'affiches l'erreur SQL. Tu peux chercher dans l'API ou tenter :

    après la requête.
    Vive les roues en pierre

  9. #9
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 62
    Points
    62
    Par défaut
    apparemment je vais passé la nuit au bureau !! la
    n'affiche rien

  10. #10
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 62
    Points
    62
    Par défaut
    Pouvez vous me dire comment chercher dans l'API ??

  11. #11
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Ta classe 'requete' elle vient d'où ? car il faudrait trouver la doc de cette classe.
    J'imagine qu'elle stocke quelque part les erreurs SQL quand il y en a et qu'il y a moyen de les afficher.

    Sinon essaye sans la classe :

    $sql = "LOAD DATA LOCAL INFILE `etudeData` INTO TABLE etude_cell FIELDS TERMINATED BY `;`";
    $req = mysql_query($sql) or die(mysql_error());
    Vive les roues en pierre

  12. #12
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 62
    Points
    62
    Par défaut
    Re Salut

    ban problème résolut, un de mes collègue a eu l'idée d'utiliser ce qui renvoie les données structuré de la variable et comme elle m'a retourné un errmsg que j'ignorai son existence. ban j'avais une erreur avec ma requête sql je sais pas qu'est ce qui a résolut le problème !#O?£$$#

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = 'load data local infile "etudeData" into table UMTS_napetude_cell fields terminated by ";" lines terminated by "\n"';

  13. #13
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Arf j'ai pas pensé au var_dump() ^^
    Vive les roues en pierre

  14. #14
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 62
    Points
    62
    Par défaut
    XD comme ça on va jamais l'oublier

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 22/05/2015, 11h25
  2. Alimenter une BDD MySQL en asynchrone
    Par crixcrox dans le forum Administration
    Réponses: 0
    Dernier message: 20/05/2014, 17h07
  3. Réponses: 0
    Dernier message: 12/04/2013, 15h19
  4. Réponses: 7
    Dernier message: 04/04/2007, 13h37
  5. pb pour rentrer une valeur dans une bdd mysql
    Par gaetan.tranvouez dans le forum Requêtes
    Réponses: 25
    Dernier message: 02/06/2006, 21h29

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