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 :

execution import fichier.sql avec System [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 118
    Points : 52
    Points
    52
    Par défaut execution import fichier.sql avec System
    Bonjour à tous,
    j'ai longuement chercher avant de poster et franchement je ne vois pas où est le problème.
    je fais un dump d'une base à une autre avec la même table sur 2 serveurs différents. La commande Mysqldump fonctionne très bien. J'ai fais quelques lignes de code afin de reformater mon fichier.
    j'ai modifié le fichier pour avoir
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO `ma_table` (champ1, champ2, ect) VALUES (champ1, champ2, etc)
    sans l'id des tables.
    quand j'exécute mes requêtes, elles fonctionnent sur phpmyadmin.
    le problème est le suivant :
    quand j’exécute cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("mysql -h xxxx -u xxxx -pxxxxx ma_base < data_ihm.sql",$retval);
    La variable de retour renvoie 1.
    mais rien ne s'insère en base.
    Mes paramètres de connexion sont correctes, et le fichier sql est dans le même répertoire que le script. Le serveur est sous linux.
    Voilà, je viens vers vous car là je ne vois pas du tout où est le problème.
    Pourriez vous m'aider s'il vous plaît ?
    merci d'avance.

    Cordialement,

  2. #2
    Membre actif
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2009
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2009
    Messages : 447
    Points : 241
    Points
    241
    Par défaut
    ou est le nom de table içi :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO (champ1, champ2, ect) VALUES (champ1, champ2, etc)

    ca devrait étre :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO TABLE(champ1, champ2, ect) VALUES (champ1, champ2, etc)

    sinon la valeur retourné ça vous dis quoi , une erreur ou bien quoi !!

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 118
    Points : 52
    Points
    52
    Par défaut
    bonjour et merci.

    le nom de la table est présente dans le fichier, c'est moi qui a oublié de la mettre sur le post. C'est ca le problème c'est qu'il existe la variable de retour pour la fonction system de php. Elle retourne 1 si c'est bon sinon false.
    moi cela me renvoie 1 mais pas d'insertion.

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 118
    Points : 52
    Points
    52
    Par défaut
    je mets le code complet au cas ou.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    system("/usr/bin/mysqldump --skip-add-drop-table --host=xxxx --user=xxx --password=xxxx ma_base --tables --no-create-info data_ihm > data_ihm.sql");
      $fichier = "data_ihm.sql";
      $content=file($fichier);
      $preg_replace = preg_replace("/\((.*),/U", "(", $content);
      file_put_contents($fichier, $preg_replace);
      $content=file($fichier);
      $replace = "INSERT INTO `data_ihm` (iso_ville_depart,iso_pays_depart,iso_ville_arrivee,iso_pays_arrivee,date_heure_depart,date_heure_arrivee,date_heure_retour_depart,date_heure_retour_arrivee,aeroport_depart_aller,aeroport_arrivee_aller,aeroport_depart_retour,aeroport_arrivee_retour,code_compagnie,code_compagnie_retour,duree_vol_aller,duree_vol_retour,num_vol_aller,num_vol_retour,nb_escales_aller,nb_escales_retour,prix,promo,date_insert,flag_xml) VALUES";
     $content2 = str_replace("INSERT INTO `data_ihm` VALUES", $replace, $content);
     file_put_contents($fichier, $content2);
    ce code fonctionne, j'arrive à générer mon fichier sql.

    L'import :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("mysql -h xxx-u xxx-pxxxx ma_base < data_ihm.sql");

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 118
    Points : 52
    Points
    52
    Par défaut
    j'ai essayé de faire la même commande dump du 1er serveur qui fonctionnait, sur le 2e serveur.

    Et la il me crée un fichier vide, alors en effet on est en droit de penser que cela peut être un problème de privilèges.

    Dès que j'ai la réponse je post.

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 118
    Points : 52
    Points
    52
    Par défaut
    je confirme c'est un problème de droits, j'ai essayé la commande d'export et import sur le 1er serveur et tout fonctionne.

    Merci pour vos infos. Ce sujet est résolu.

    Bonne journée et bonne continuation.

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

Discussions similaires

  1. Import fichier xml avec sql loader
    Par wil_65 dans le forum SQL*Loader
    Réponses: 0
    Dernier message: 21/04/2009, 16h44
  2. Importer un fichier .sql avec ASP.Net entreprise manager
    Par Orb Dorb dans le forum Débuter
    Réponses: 0
    Dernier message: 06/02/2009, 05h35
  3. Réponses: 2
    Dernier message: 21/07/2008, 15h00
  4. [SQL] Executer un fichier .sql avec php
    Par Mouchi93 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/08/2007, 16h08
  5. import fichier Txt avec du SQL
    Par bouba_95 dans le forum Access
    Réponses: 1
    Dernier message: 19/01/2007, 21h44

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