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

Outils MySQL Discussion :

Transformer une base de données Mysql en XML


Sujet :

Outils MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Transformer une base de données Mysql en XML
    Bonjour,

    Je possède une base de données Mysql avec 6 tables et je recherche comment l'exporter en un fichier XML. Je débute en PHP et Mysql. J'ai pu voir plusieurs tuto sur Internet mais ils ne sont pas très bien expliqués pour un débutant.

    Merci de vos conseils,tuto ou outils pour réaliser un fichier XML

    Voici ma première Table, je suis preneur de tous conseils.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    DROP DATABASE IF EXISTS RESULTAT;
     
    CREATE DATABASE IF NOT EXISTS RESULTAT;
    USE RESULTAT;
     
     
    # ------------------------------------------------------------*-----------------
    # TABLE : CATEGORIE
    # ------------------------------------------------------------*-----------------
     
    CREATE TABLE IF NOT EXISTS CATEGORIE
    (
    ID_CATEGORIE INT(11) NOT NULL AUTO_INCREMENT ,
    NOM_CATEGORIE CHAR(32) NOT NULL
    , PRIMARY KEY (ID_CATEGORIE)
    )
    comment = "";
     
     
    -- 
    -- Contenu de la table CATEGORIE
    -- 
     
     
    INSERT INTO `CATEGORIE` VALUES ('','Sport');
    INSERT INTO `CATEGORIE` VALUES ('','Cinéma');
    INSERT INTO `CATEGORIE` VALUES ('','Musique');
    INSERT INTO `CATEGORIE` VALUES ('','Politique');
    INSERT INTO `CATEGORIE` VALUES ('','People');

  2. #2
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    A première vue, mysqldump en utilisant l'option "--xml" pourrait faire l'affaire.

    La base d'exemple donnerait quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <?xml version="1.0"?>
    <mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <database name="RESULTAT">
            <table_structure name="categorie">
                    <field Field="ID_CATEGORIE" Type="int(11)" Null="NO" Key="PRI" Extra="auto_increment" />
                    <field Field="NOM_CATEGORIE" Type="char(32)" Null="NO" Key="" Extra="" />
                    <key Table="categorie" Non_unique="0" Key_name="PRIMARY" Seq_in_index="1" Column_name="ID_CATEGORIE" Collation="A" Cardinality="3" Null="" Index_type="BTREE" Comment=""/>
                    <options Name="categorie" Engine="InnoDB" Version="10" Row_format="Compact" Rows="3" Avg_row_length="5461" Data_length="16384" Max_data_length="0" Index_length="0" Data_free="0" Auto_increment="4" Create_time="2008-12-02 14:13:43" Collation="latin1_swedish_ci" Create_options="" Comment="InnoDB free: 19556352 kB" />
            </table_structure>
            <table_data name="categorie">
            <row>
                    <field name="ID_CATEGORIE">1</field>
                    <field name="NOM_CATEGORIE">People</field>
            </row>
            <row>
                    <field name="ID_CATEGORIE">2</field>
                    <field name="NOM_CATEGORIE">Sport</field>
            </row>
            <row>
                    <field name="ID_CATEGORIE">3</field>
                    <field name="NOM_CATEGORIE">Politique</field>
            </row>
            </table_data>
    </database>
    </mysqldump>
    En passant, avec une clef auto-incrémentée il faut de préférence ne pas donner de valeur ou donner "null" pour la clef. Et sinon au moins une valeur du même type qui sera ignorée. Là c'est une valeur texte, ça ne marche pas.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Merci pour la réponse mais malheureusement lorsque je tape la commande

    mysqldump --xml --databases > backup-file.xmll

    ou mysqldump --xml databases > backup-file.xmll

    ou encore une dizaine d'autres, j'ai toujours une erreur de syntaxe (je le lance depuis PhpMyAdmin dans la fenêtre sql.

    Sinon j'essaye de modifier ce code pour qu'il prennent en compte les accents sans résultat pour l'instant. Les mots dans le fichier sont découpés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    12345678910111213141516171819202122232425262728293031323334353637383940414243
    <?php
     
    //connection à la base de donnée
    $db_name = "resultat";
    $link = mysql_connect("localhost", "root", "") or die("Connexion impossible.");
    $table_name = 'categorie, discipline, individus';
     
    $db = mysql_select_db($db_name);
     
    $query = "select * from " . $table_name;
    $result = mysql_query($query, $link) or die("Impossible d'interroger la base de données");
    $num = mysql_num_rows($result);
     
    // connaître le nbre de champs
      $nombre=mysql_num_fields($result);
     
    // s'il y a des résultats  
    if ($num != 0) {
          $file= fopen("results.xml", "w");
          $_xml ="<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n";
          $_xml .="<newsList>\r\n";
     
          while ($row = mysql_fetch_array($result)) {
     
    for ($i=0;$i<$nombre;$i++){
        $_xml .="<news>\r\n";
    $champs=mysql_field_name($result,$i);
         //convertit en utf8 pour les caractères accentués.
       $contenu=utf8_encode($row[$champs]);
     
                $_xml .="\t<$champs>" . $contenu . "</$champs>\r\n";
       $_xml .="</news>\r\n";
      }
             }
     
    $_xml .="</newsList>";
    fwrite($file, $_xml); fclose($file);
            echo "Le fichier XML a était créé <a href=\"results.xml\">Show source :).</a>";
    }
    else {
        echo "erreur";
    }  
    ?>

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 277
    Points : 11 733
    Points
    11 733
    Par défaut
    il ne faut pas utiliser > backup-file.xmll, mais -rbackup-file.xmll
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  5. #5
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Citation Envoyé par jrlulu Voir le message
    ou encore une dizaine d'autres, j'ai toujours une erreur de syntaxe (je le lance depuis PhpMyAdmin dans la fenêtre sql.
    "mysqldump" n'est pas une commande SQL mais un utilitaire fourni avec MySQL. Il faut l'éxécuter depuis la ligne de commande (http://jgrondin.developpez.com/artic...arde_MySQL/#LA). Sinon PhpMyAdmin permet de faire des backup... il faudrait voir s'il n'a pas une option équivalente au "xml" de mysqldump.

    Citation Envoyé par jrlulu Voir le message
    Sinon j'essaye de modifier ce code pour qu'il prennent en compte les accents sans résultat pour l'instant.
    Le mieux serait peut-être encore de demander directement de l'utf-8 à mysql. Ce tutoriel devrait pouvoir t'aider : http://antoun.developpez.com/mysql5/jeux-collations/. Cela dit je ne connais rien au PHP.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 7
    Points
    7
    Par défaut problème résolu
    Merci pour vos aides, j'ai résolu le problème en désinstallant EasyPhp et en installant Wamp.

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

Discussions similaires

  1. [SAX] Transformation du contenu d'une base de données MySQL en XML en utilisant SAX en Java
    Par mankou dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 05/01/2012, 16h35
  2. [XML] importer un fichier .log ou .xml dans une base de donnée MySQL
    Par sorayati dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 02/08/2009, 17h16
  3. transforme une base de données Access en un fichier xml
    Par canada_bea dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 14/06/2009, 16h47
  4. [MySQL] passerelle entre un fichier xml et une base de données mysql
    Par Deboh dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/06/2008, 09h59
  5. Intégration des fichier XML dans une base de données MySQL
    Par bebemoundjou dans le forum XQUERY/SGBD
    Réponses: 8
    Dernier message: 25/11/2005, 23h41

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