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

Windows Forms Discussion :

[C#] [XML] Traitement de gros fichiers XML (90 Mo)


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut [C#] [XML] Traitement de gros fichiers XML (90 Mo)
    Bonjour,

    Environnement: VS .NET 2003 Fr
    Framework: 2.0
    OS: Win XP Pro SP1

    Je suis en charge de développer un programme qui extraiera le contenu d'un dictionnaire en XML de 90 Mo, vers une base de données.
    Ou à défaut, vers un fichiers contenant les requêtes SQL à exectuer.

    Au départ un script php, j'ai opté pour un programme puisque l'utilisation sera ponctuelle, et vu la taille du fichier, j'ai pensé que ce serait plus adapté avec un programme, qu'avec un script php. (ce n'est pas l'objet de mon post, mais si quelqu'un pense le contraire, je veux bien qu'on me le dise, et pourquoi, que je m'instruise ^^).

    Quelle est la meilleure classe à utiliser pour ce genre de tâche?
    Ca fait une bonne heure que je patauge dans l'aide de VS, à la recherche d'une solution.

    Je ne souhaite pas l'afficher dans un tableau (le XML contient quelque chose comme 450 000 enregistrements), je souhaite juste récupérer les données pour les afficher en requêtes SQL du genre INSERT INTO nom_table (propXML1, propXML2) VALUES (dataXML1, dataXML2).

    Si le fichier était petit, ça me poserait pas de problème d'utiliser je ne sais quelle methode, mais là, vu la taille (90 Mo je rappelle), je souhaite connaître la méthode la moins gourmande !

    Quelqu'un peut m'aiguiller?

    Merci beaucoup !

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    l'objet DataSet s'arrange nativement du XML, puis il peut servir dans un second temps comme fournisseur de données pour un quelconque provider par l'intermediaire de DbConnection, DbCommand, DbDataAdapter etc... de ton client DB.
    Tu auras besoin comme references de System.Data.dll et de System.XML.dll et ensuite de la dll propre au provider DB, par exemple System.Data.SqlClient
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Membre régulier Avatar de Piet
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 111
    Points : 108
    Points
    108
    Par défaut
    Quelle est la structure de ton xml ?
    si tu peux couper ton fichier en le lisant comme un fichier texte pour le séparer en plusieurs petits fichiers xml, tu gagneras beaucoup sur la RAM nécessaire à l'exécution et tu risque moins d'avoir un dépassement de mémoire.

    Il te suffit alors de traiter chaque fichier xml généré pour en intéger les résultats dans la DB.
    Piet

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    90 Mo, c'est énorme tout de même

    Mais comme souligné par neguib, essaye de passer par un Dataset

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Ah, je vais tenter le dataset, et si ça ne marche pas, je tenterai le morcellage.
    J'espere juste que le dataset ne lis pas tout d'un coup, sinon ça v apas le faire (pas sur ma machine en tout cas).

    Merci pour les conseils, je vous tiens au courant dès que j'ai essayé tout ça.
    (y'a pas un tag [loading] pour les topics? nan? La porte là? oui je sors).

  6. #6
    Membre éclairé Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Points : 774
    Points
    774
    Par défaut
    j'essaie de comprendre tu as un fichier xml de grosse taille et
    tu veux y ecrire des donnees.

    As-tu la possibilite de change completement de source de dB
    cad peut tu exporter ton xml vers une autre base de donee.

    Si oui : plus de probleme (va jeter un oeil du coter de ADO.net )
    Si non : le morcelage me semble une bonne idee.

    sinon tu peux effectivement garder tout ca dans un dataset au lancement de ton appli puis remetre a jour ton fichier a la fermeture de ton appli.

    cela prendra un peu de temps a l'initialisation et a la fermeture.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    En fait, je ne veux rien écrire dans le fichier XML de 90 Mo. Mais je veux extraire les données, pour les écrire dans un autre fichier.

    Et malheureusement non, je ne peux pas récupérer ces données autrement que dans ce fichier XML.

    Donc apparement vaut mieux le morcelage. De toute façon je pense que le dataset ne marchera pas avec autant de données, donc je vais le tenter en premier.

    Mais demain, parce qu'aujourd'hui c'est dimanche, et dimanche, c'est vacanches !

  8. #8
    Membre éclairé Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Points : 774
    Points
    774
    Par défaut
    desoler d'insister mais encore une fois.

    ton fichier xml est et restera toujours le meme.

    si oui exporte ces donnees une bonne fois pour toute vers un bd (sql server par example) et apres travaille avec ta nouvelle db.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Mais c'est justement exactement ce que je veux faire : mettre ces données dans une db.

    Mais cette db n'est pas à moi, et le propriétaire aura d'autres fichiers XML de ce genre, d'où l'interêt d'un programme qui pourra traiter le truc, histoire de le réutiliser à l'avenir.

    A l'idéal j'aimerais pouvoir detecter la structure du XML, pour pouvoir choisir le nom des tables et colonnes qui seront crées, mais bon, ça sera dans un second temps.

  10. #10
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 83
    Points : 100
    Points
    100
    Par défaut
    Est-ce que le passage au framework 2.0 peut être envisagé pour toi ?

    Parce que justement, le traitement du XML est un aspect qui a été beaucoup amélioré dans la nouvelle version (fonctionalités et performances)...

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Bon, visiblement, je suis pas doué.

    J'ai fait un simple test, en chargeant le fichier xml dans un xmldatadocument, pour ensuite le traiter comme un dataset (si j'ai bien compris c'est la marche à suivre... sinon corrigez-moi).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    XmlDataDocument dsxml = new XmlDataDocument() ;
    			try
    			{
    				dsxml.LoadXml("test.xml") ;
    			}
    			catch(XmlException e) 
    			{
    				MessageBox.Show("Erreur rencontrée : \n"+e.ToString());
    			}
    Et j'ai une foultitude d'erreurs rencontrées. J'ai testé avec un XML que je sais sûr, le problème reste. Donc j'ai sûrement omis quelque chose...

    Help?

    [Edit] :
    Je susi passé au framework 2.0, au cas où... mais ça n'a rien changé...


    [Edit 2] :
    Je m'attends à ce qu'on me demande le message d'erreur, alors le voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    System.Xml.XmlException : données non valides au niveau racine. Ligne 1, position 1.
    at System.Xml.XmlTextReader.ParseRoot()
    at System.Xml.XmlTextReader.Read()
    at System.Xml.XmlValidatingReader.ReadWithCollectTextToken()
    at System.Xml.XmlValidatingReader.Read()
    at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhiteSpace)
    at System.Xml.XmlDocument.Load(XmlReader reader)
    at System.Xml.XmlDataDocument.Load(XmlReader reader)
    at System.Xml.XmlDocument.LoadXml(String xml)

  12. #12
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Quelle est la foultitude d'erreurs stp :
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Ah ben ça a pas traîné ^^

    J'ai mis ça en edit de mon post précédent...

    Au cas où, le contenu du XML :
    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
     
    <?xml version="1.0"?>
      <dict>
        <entry>
          <k_ele>
            <keb>ゝ泉</keb>
          </k_ele>
          <r_ele>
            <reb>ちゅせん</reb>
          </r_ele>
        </entry>
        <entry>
          <k_ele>
            <keb>〆</keb>
          </k_ele>
          <r_ele>
            <reb>しめ</reb>
          </r_ele>
        </entry>
      </dict>
    N.B. : ce fichier contient des caractères spécifiques japonais, la plupart d'entre vous ne les verront pas, à moins d'avoir installé le package des caractères concernés.
    Je précise que les tests que j'ai fait ont été également fait avec un XML à encodage normal, avec aucun caractère spécial. Mais ils sont plus long, je vais pas le mettre ici...

  14. #14
    Expert éminent
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Points : 6 418
    Points
    6 418
    Par défaut
    90 MO de XML dans un datset

    heu excusez moi mais je ne suis pas du tout d'accord avec les réponses que vous avez faite. S'il utilise un dataset :
    Il va mettre 3 plombes à se charger.
    Il va se retrouver avec une consomation mémoire impressionnante b(car tout le xml va être chargé d'un coup.

    Il vaut mieux qu'il travaille sur un flux et qu'il insère ses données dans la base au fur et à mesure de la lecture de son flux.

    http://support.microsoft.com/default.aspx?scid=kb;en-us;301228

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Excellent le lien... Je fouillerai plus en détail demain matin..

    Ce serait pas une bonne idée de mettre dans la FAQ un moyen de traiter le XML ?
    Parce que c'est expliqué comment écrire dans un XML, mais pas comment le lire...

    Enfin bon, je teste ça et je vous dirai demain si ça a marché.

  16. #16
    Membre éclairé Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Points : 774
    Points
    774
    Par défaut
    heu excusez moi mais je ne suis pas du tout d'accord avec les réponses que vous avez faite
    ???

    t'as du mal comprendre nos reponses.

    maitenant Pulsahr a titre d'info un moyen simple de verifier si tu peux mettre ton xml dans un xmldatadocument et de cliquer droit sur ton fichier puis de louvrir avec visual studio puis de cliquer en bas a gauche sur l'onglet data si tu vois les donees c'est bon par contre si tu recois une image grise avec qq erreurs quelles soient alors la c'est foutu pour le xmldatadocument et bonjour le xpath.

    sur quelle base de donne tu veux exporter son fichier xml??

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Bon j'ai testé, et les résultats sont concluants. Je veux dire, le fichier est lu au fur et à mesure, et non chargé en une fois.
    J'ai pas fait grand chose de plus pour le moment à part me promener dans l'arborescence.

    Un défaut toutefois, je n'ai pas trouvé comment utiliser des commande comme NextSibling apparement indisponible pour un objet stream.

    Donc, il faut récupérer le nom du noeud, faire des vérifs pour l'existence d'attributs, "guetter" la fermeture d'un élément pour detecter le nombre de sous-éléments.... pas aussi pratique q'un objet XML, mais pour un fichier de cette taille, ça me paraît la seule méthode disponible en terme de performances.

    Je posterai un bout de mon traitement une fois que je l'aurai fini, ça pourra servir à d'autres.

    [Edit en réponse à Zeavan]
    L'exportation est pour une base MySQL. Mais en fichiers SQL, pas en données directes, je dois donc créer des fichiers SQL contenant les requêtes d'insertion.

    Je crois avoir déjà essayé avec un XMLdatadocument, sans succès.

    Après étude du fichier XML, il semblerait que des "&" se promènent un peu partout, rendant la structure XML invalide, qu'il aurait fallu remplacer par des "&amp". Comme ces données sont destinées à être affichées sur une page web, l'auteur du fichier XML a probablement oublié ce remplacement...

    En tout cas l'utilisation du stream fonctionne, même si c'est moins confortable, je n'ai pas eu d'erreur de lecture. Quant au traitement, ben il me reste à le programmer ^^

  18. #18
    Expert éminent
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Points : 6 418
    Points
    6 418
    Par défaut
    Donc, il faut récupérer le nom du noeud, faire des vérifs pour l'existence d'attributs, "guetter" la fermeture d'un élément pour detecter le nombre de sous-éléments.... pas aussi pratique q'un objet XML, mais pour un fichier de cette taille, ça me paraît la seule méthode disponible en terme de performances.
    comme dirait l'autre on peut pas avoir le beurre et l'argent du beurre

    Si tu charges tout en mémoire la lecture de ton fichier est bien plus flexible.

    Si tu fais avec un flux faut avoir une approche plus séquentielle... mais tu peux lire des fichiers aussi gros que tu veux

  19. #19
    Membre du Club Avatar de papouAlain
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 127
    Points : 64
    Points
    64
    Par défaut
    ah oui le lien est pas mal!
    c'est dommage ce sujet m'interessait aussi !
    C'est au pied du mur, qu'on voit le mieux le mur !!!

  20. #20
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Bon, alors, j'ai fini mon programme, et à priori il fonctionne parfaitement.
    Il m'a généré mes fichiers SQL sans problème, et même la génération de table avec detection du nom du noeud principal comme nom de table (nan mais c'est-y-pas cool ça?).

    Pour les interessés, voici le code ma fonction :

    (attention, long !)

    Avant de commencer, j'utiliser 2 fonctions annexes :
    void vider_tableau(string[] tableau) qui initialise toutes les valeurs du tableau à null
    bool in_array(string recherche, string[] tableau) qui retourne vrai si la chaine recherche est trouvée dans le tableau.
    (Je suis sûr qu'il doit y avoir des fonctions toutes faite pour ça, mais j'étais très préssé, donc j'ai pas cherché).

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
     
    private void extraction_xml (string filename)
     {
        StreamReader stream = new StreamReader(filename) ;
        XmlTextReader reader = null ;
        reader = new XmlTextReader(stream) ;
     
        string nentry = "" ;
        int numentry = 0 ;
        byte lvl = 0 ; //inutilisé actuellement, mais permet de connaître la profondeur d'un noeud.
        bool start = true ;
     
        string msg = "" ;
        string nodename = "" ;
        string rac_filename = "sql_insert_" ;
        string cur_filename = "" ;
     
        StreamWriter fichier_sql = null ;
     
        String[] TabCol = new String[50] ;
        TabCol.Initialize() ;
        String[] TabColSQL = new String[50] ;
        TabColSQL.Initialize() ;
        byte indice_tabsql = 0 ;
     
        byte nbcol = 0 ;
        int nb_lignes = 1 ;
        int nb_fic = 1 ;
     
        string sql = "" ;
        string sql_cols = "" ; //liste des colonnes utilisée pour l'enregistrement en cours
        string sql_vals = "" ; //de même pour les valeurs.
        string table ="" ; //nom de la table, initialisé un peu plus tard
     
        try
        {
           while (reader.Read())
           {
              XmlNodeType nt = reader.NodeType ;
              switch (nt)
              {
                case XmlNodeType.Element: // The node is an Element.
                  if (start)
                  //Initialisation de l'extraction : récupération du nom de table, et du nom de l'entrée principale
                  {
                      if (nentry =="" && table!="")
                      {
                         nentry = reader.Name ;
                         start = false ;
                         numentry = 1 ;
                         lvl=1 ;
                         fichier_sql = File.CreateText(table + "_" + rac_filename + "0.sql") ;
                      }
                     if (table =="")
                      {
                          table = reader.Name ;
                      }
                  }
                 else
                  {
                     if (reader.Name==nentry) //on commence une nouvelle entrée
                      {
                         numentry++ ;
                         lvl = 1 ;
                         sql_cols = "" ;
                         sql_vals = "" ;
                         nbcol = 0 ;
                         TabCol = vider_tableau(TabCol) ; 
                      }
                     else
                      {
                         lvl++ ;
                         //Sous-élément de l'entrée principale
                         //while (reader.MoveToNextAttribute()) // Read attributes. -inutilisé dans mon cas
                             nodename = reader.Name ;
                      }
                   }
                  break;
                case XmlNodeType.Text: //Display the text in each element.
                   if (nodename != "ent_seq")
                   //un noeud porte ce nom pour forcer une indexation particulière, je m'en suis désinteressé pour mon cas. (auto_increment utilisé dans la DB)
                    {
                       //On est dans un noeud 'significatif' (contenant une valeur)
                       if (!in_array(nodename,TabCol))
                         {
                            sql_cols += "," + nodename ;
                            sql_vals += ",'" + reader.Value + "'" ;
                            TabCol[nbcol] = nodename ;
                            nbcol++ ;
                         }
                       if (!in_array(nodename,TabColSQL))
                         {
                            TabColSQL[indice_tabsql] = nodename ;
                            indice_tabsql++ ;
                          }
                      } ;
                     break;
                   case XmlNodeType.EndElement: //Display end of element.
                     if (reader.Name == nentry)
                      {
                         //clôture d'une entrée
                         if (sql_cols.Length>0)
                          {
                             sql = "INSERT INTO "+table+" ("+sql_cols.Substring(1)+") VALUES ("+sql_vals.Substring(1)+") ;" ;
                             //ECRITURE dans le fichier texte :
                             if (nb_lignes == 0)
                              {
                                 //Fichier précédent terminé
                                 cur_filename = table + "_" + rac_filename + nb_fic + ".sql" ;
                                 fichier_sql = File.CreateText(cur_filename) ;
                                 nb_fic++ ;
                               }
                            fichier_sql.WriteLine(sql) ;
                            nb_lignes++ ;
                            if (nb_lignes>=2000) //limite pour éviter un timeout si utilisé en phpmyadmin
                             {
                                fichier_sql.Close() ;
                                nb_lignes = 0 ;
                             }
                          }
                     }
                    else
                     {
                        //clôture d'un sous-élément
                        lvl-- ;
                     }
                    break;
                 }
             }
          }
         catch(Exception e) 
         {
            MessageBox.Show("Erreur rencontrée : \n"+e.ToString());
         }
         //*/
         //Création du fichier de création de table.
         string column = "" ;
         fichier_sql = File.CreateText(table+"_structure.sql") ; 
         fichier_sql.WriteLine("CREATE TABLE `"+table+"` (") ;
         fichier_sql.WriteLine("`id` INT NOT NULL auto_increment,") ;
         int len = TabColSQL.Length ;
         int i = 0 ;
         for (i=0;i<len;i++)
          {
            column = TabColSQL[i] ;
            if (column!=null)
            {
               fichier_sql.WriteLine("`"+column+"` varchar(255) DEFAULT NULL,") ;
            }
          } ;
         fichier_sql.WriteLine("PRIMARY KEY  (`id`) ) ENGINE=MyISAM") ;
         fichier_sql.Close() ;
         MessageBox.Show("Extraction terminée !") ;
      }

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/04/2008, 11h24
  2. Réponses: 3
    Dernier message: 06/08/2007, 03h44
  3. [DOM] (org.w3c.dom) copier un noeud d'un fichier XML dans un autre fichier XML
    Par snoop dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 13/02/2007, 17h22
  4. Java et XML : Traitement d'un fichier XML avec JAVA
    Par nice dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 18/05/2006, 21h24
  5. Importer le contenu un fichier xml dans un autre fichier xml
    Par gedeon555 dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 27/07/2005, 11h49

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