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

XMLRAD Discussion :

importation d'un fichier csv


Sujet :

XMLRAD

  1. #1
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    Points : 56
    Points
    56
    Par défaut importation d'un fichier csv
    On peut facilement extraire des données d'une table ou d'une requête sous forme de fichier csv. Peut on faire le contraire ?

    J'aimerais chargé un fichier csv et lire champ à champ afin d'enregistrer les infos dans ma base.
    Avec l'intruction file, il me semble possible de le faire avec un fichier xml, je cherche la même chose avec du csv.

    Merci
    Température de l'eau : 28 °
    Température extérieure : 32°
    Température au fond du verre : 50° ~ 55°
    ------ Mangez des bananes ----------

  2. #2
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    non y a rien de prévu pour ca tout simplement parce que ce n'est pas aussi simple que du XML.
    a toi de faire la moulinette.
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 284
    Points : 349
    Points
    349
    Par défaut
    Il est possible d'utiliser une connection ADO sur un fichier CSV, ce qui te permet d'exécuter des requetes SQL sur ton fichier, et donc d'utiliser des DBExtracts.
    Il faut que le fichier soit bien formaté, avec en permiere ligne, le nom des colonnes.
    Nicolas

  4. #4
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    ah oui exact, j'avais oublié
    pour la peine je ferai un FAQ.
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  5. #5
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    Points : 56
    Points
    56
    Par défaut
    Attendant la FAQ avec impatience, j'essaie de faire l'import d'un document xml.

    1 / j'ai un fichier dont la stucture est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <DATAS>
      <DATA>
        <CODE><![CDATA[TOTO]]></CODE>
        <LIB><![CDATA[Test 1]]></LIB>
        <DT><![CDATA[01/01/2005]]></DT>
      </DATA>
      <DATA>
        <CODE><![CDATA[TOTO]]></CODE>
        <LIB><![CDATA[Test 2]]></LIB>
        <DT><![CDATA[01/01/2005]]></DT>
      </DATA>
      ......
    </DATAS>
    Je le charge avec une instruction "file" et ça semble marcher car en affichant la page avec "XMLC_OutputFormat = xml" je retrouve bien mes données dans "/document/DATAS/DATA".
    Mes mon file me semble bizarre au regard de la doc que j'ai pu trouver :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <File Name="Test">
    <Method>LOAD</Method>
    <FileName>TestImport.xml</FileName>
    <Cached>TRUE</Cached>
    <Source>CONTEXT</Source>
    <Select>/DATAS</Select>
    <Destination>OUTPUT</Destination>
    <FieldName>DATA</FieldName>
    </File>
    a / Si je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <File Name="Test">
    ...
    <Select>/DATAS/DATA</Select>
    <FieldName>DATAS</FieldName>
    ...
    </File>
    mes données sont dans "/document/DATA" avec autant de DATA que d'enregistrements ?
    b/ Que faut-il mettre dans destination


    2 / je traite ces données avec un match avec deux fils, un insert dans une table et une gauge. Le traitement passe bien dans ce match car il se bloque sur la gauge qui prend tout l'écran, et au lieu de m'enregistrer les 10 éléments de mon fichier, il ne m'en crée qu'un seul à vide ! Je pense que le problème est dans le match :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <Match Name="MatchCYCLONE">
    <Source>INPUT</Source>
    <SourceField/>
    <FillContext>True</FillContext>
    <Select>/DATAS/DATA</Select>
    </Match>
    a / Que faut-il mettre dans "Source" et "SourceField" ?
    b / FillContext = True ou False ?

    Je pense que le "File" et le "match" n'arrive pas à se comprendre et moi non plus je les comprend pas trop !
    Température de l'eau : 28 °
    Température extérieure : 32°
    Température au fond du verre : 50° ~ 55°
    ------ Mangez des bananes ----------

  6. #6
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    Citation Envoyé par bidson

    a / Si je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <File Name="Test">
    ...
    <Select>/DATAS/DATA</Select>
    <FieldName>DATAS</FieldName>
    ...
    </File>
    mes données sont dans "/document/DATA" avec autant de DATA que d'enregistrements ?
    oui, FieldName ne sert pas dans le cas LOAD et Destination OUTPUT, c'est le noeud courant qui est mis tel qul dans l'Output, donc fonction du Select.
    b/ Que faut-il mettre dans destination
    Output, c'est bon.

    2 / je traite ces données avec un match avec deux fils, un insert dans une table et une gauge. Le traitement passe bien dans ce match car il se bloque sur la gauge qui prend tout l'écran, et au lieu de m'enregistrer les 10 éléments de mon fichier, il ne m'en crée qu'un seul à vide ! Je pense que le problème est dans le match :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <Match Name="MatchCYCLONE">
    <Source>INPUT</Source>
    <SourceField/>
    <FillContext>True</FillContext>
    <Select>/DATAS/DATA</Select>
    </Match>
    a / Que faut-il mettre dans "Source" et "SourceField" ?
    eh bien ta source c'est L'Output, puisque tes données sont dans L'output ! mais c'est vrai qu'il y a un manque dans la doc!
    le SourceField n'est pas utilisé dans le cas de l'Output mais le select oui
    b / FillContext = True ou False ?
    ca dépend si tu veux l'utiliser dans tes getionnaires d'événement ou pas.

    Je pense que le "File" et le "match" n'arrive pas à se comprendre et moi non plus je les comprend pas trop ![/quote]
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  7. #7
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  8. #8
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    Points : 56
    Points
    56
    Par défaut
    Merci pour cette FAQ, je l'ai testée et oh miracle j'ai réussi à charger un fichier csv du premier coup dans mon xml de sortie.

    Toutefois cela ne resoud pas mon problème !

    En effet, je pense que ce soit un fichier "csv" ou "xml" en entrée j'arrive bien à le charger dans "/document/DATAS/DATA" avec 10 éléments ayant comme libellé test1 à test10.

    Ensuite, je veux enregistrer (faire un insert) pour chacun de ces éléments dans une table de ma base.Pour cela j'ai utilisé un match dans lequel je fais mon insert. Mias en résultat, je n'ai la création que d'un seul enregistrement le dernier (test 10).

    1 / Utiliser un match est-elle la bonne méthode ? Si oui, comment faire pour avoir la création de 10 enregistrement ?

    2 / Par ailleurs, dans mon fichier "csv", il y a une date "01/01/2005" que je retrouve dans le xml de sortie, mais à l'enregistrement (l'unique enregistrement) cette date bascule au "30/12/1899" ! pourtant j'ai bien défini le champ comme une date à l'insert et au dbextract sur le fichier "csv".

    Merci
    Température de l'eau : 28 °
    Température extérieure : 32°
    Température au fond du verre : 50° ~ 55°
    ------ Mangez des bananes ----------

  9. #9
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    peux-tu donner le XMLGRam entier avec ton match ?
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Points : 1 446
    Points
    1 446
    Par défaut
    Je ne sais pas comment tu procède pour insérer un enregistrement dans le fichier XML résultant ?
    Tu le fait direct via ADO (et dans ce cas, pas sur que le driver txt supporte l'INSERT, à vérifier) ?
    Ou bien tu le fais dans le fichier XML résultant ? et dans ce cas, il faut le faire via une instruction XMLUpdate en s'assurant que le context contient la valeur XMLC_Operation = 'INSERT'.
    .NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

    Mon Blog : http://blog.developpez.com/index.php?blog=89
    Mes Articles : http://sjames.developpez.com/
    Rubrique XMLRAD: http://xmlrad.developpez.com

  11. #11
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    Points : 56
    Points
    56
    Par défaut
    Pour Sylvain :

    J'ai rien compris à ce que tu as écris Mon problème, c'est que j'ai un fichier csv de 10 lignes ou un xml de 10 éléments et que je veux lire le fichier pour le mettre dans le context (c'est l'output ?) et insérer ces 10 enregistrements dans ma base de données.
    Un utilisateur lambda (j'en ai 400) a une application access chez lui et je veux qu'il puisse mettre ces infos à jour dans ma base de données à travers le net par un import/export de fichier.
    Ainsi je pourrais comparer 2 ou plusieurs clients ou même faire de l'analyse de groupe.

    Pour RDM :

    l'extraction du fichier csv (qui marche !) :
    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
    <DBExtract Name="TEST1">
    <DataSource>Test</DataSource>
    <Kind>Multiple</Kind>
    <MaxRows>-1</MaxRows>
    <Object>QUERY</Object>
    <StoredProcName/>
    <GenerateOutput>True</GenerateOutput>
    <MultipleContainerName>TESTS</MultipleContainerName>
    <RecordName>TEST</RecordName>
    <ReplaceBlankValues/>
    <Statement><![CDATA[SELECT *
    FROM test.csv
    ]]></Statement>
    <Trace>
    <BeforeInstruction/>
    <BeforeInternalInstruction/>
    <AfterInternalInstruction/>
    <AfterInstruction/>
    </Trace>
    <Filter/>
    <Fields>
    <Field>
    <Name>DTPASS</Name>
    <SourceField/>
    <Type>DATE</Type>
    <Format/>
    <CustomFormat/>
    <Fields/>
    </Field>
    </Fields>
    <Params/>
    </DBExtract>
    puis le match qui suit (il y a une histoire de fragment dedans, je ne sais pas d'où ça vient !! certainement d'un copier/coller car la notion de NUMCM est bien quelque chose de mes petites affaires)

    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
    <Match Name="MatchCYCLONE">
    <DBBatch Name="CYCLONE">
    <DataSource>DbtBanamart</DataSource>
    <Params>
    <Param>
    <Name>DTPASS</Name>
    <Type>DATE</Type>
    <Value/>
    <CheckConstraint/>
    <Exception/>
    <UpdateMode/>
    <Statement/>
    <Fields>
    <Field>
    <Name>NUMCM</Name>
    </Field>
    </Fields>
    <Fragments>
    <Fragment>
    <Name>NUMCM</Name>
    <Kind/>
    <DatasetName/>
    <RecordName/>
    <Container/>
    <KeyField/>
    <XPath/>
    <Fields>
    <Field>
    <Name>NUMCM</Name>
    <Type>INTEGER</Type>
    <CheckConstraint/>
    <ExceptionMessage/>
    </Field>
    </Fields>
    </Fragment>
    </Fragments>
    </Param>
    </Params>
    <Statement>INSERT INTO CYCLONE (NUMVERSION, CODCYCL, LIBCYCL, DTPASS, OUT, NUMREPLIC)
    VALUES (GEN_ID(INCNUMVERSION,1), :CODCYCL, :LIBCYCL, :DTPASS, 0, GEN_ID(INCNUMREPLIC,1))</Statement>
    <Object>QUERY</Object>
    <StoredProcName/>
    <Events/>
    <Trace>
    <BeforeInstruction/>
    <AfterInstruction/>
    </Trace>
    </DBBatch>
    <Events>
    <Event>
    <Name>BeforeInstruction</Name>
    <MethodName>FormPRODUCT_MatchCYCLONE_BeforeInstruction</MethodName>
    <Language>JScript</Language>
    <Module>FormPRODUCT</Module>
    <FileName>FormPRODUCT.js</FileName>
    </Event>
    </Events>
    <Source>XMLCURSOR</Source>
    <SourceField>FileCursor</SourceField>
    <FillContext>True</FillContext>
    <Select>/document/TESTS/TEST</Select>
    <Trace>
    <BeforeInstruction/>
    <BeforeInternalInstruction/>
    <AfterInternalInstruction/>
    <AfterInstruction/>
    </Trace>
    </Match>
    et pour la forme, voici le file qui pourrait remplacer le l'extract si le fichier de données est de type "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
    <File Name="Test">
    <Method>LOAD</Method>
    <FileName>C:\MacSiba\BanaWeb\Bin\Temp\TestImport.xml</FileName>
    <HashMod/>
    <HashLevel/>
    <Usage/>
    <Cached>TRUE</Cached>
    <Source>CONTEXT</Source>
    <Select>/DATAS/DATA</Select>
    <Destination>OUTPUT</Destination>
    <FieldName>DATAS</FieldName>
    <Unicode>TRUE</Unicode>
    <Trace>
    <BeforeInstruction/>
    <AfterInstruction/>
    </Trace>
    <Fragments/>
    </File>
    Température de l'eau : 28 °
    Température extérieure : 32°
    Température au fond du verre : 50° ~ 55°
    ------ Mangez des bananes ----------

  12. #12
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    ton match doit avoir comme Source Output et non XMLCursor !
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  13. #13
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Points : 1 446
    Points
    1 446
    Par défaut
    Citation Envoyé par bidson
    Pour Sylvain :

    J'ai rien compris à ce que tu as écris
    Pour RDM :
    euh en me relisant... moi non plus..., sorry :-)
    RDM vient de te l'indiquer, il y a de fortes chances qu'il faille aller pêcher tes données dans l'OUTPUT, puisque les données produites par ton DBExtract y ont été insérées.
    .NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

    Mon Blog : http://blog.developpez.com/index.php?blog=89
    Mes Articles : http://sjames.developpez.com/
    Rubrique XMLRAD: http://xmlrad.developpez.com

  14. #14
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    Points : 56
    Points
    56
    Par défaut
    Je ne comprends pas, j'avais testé toutes les solutions possibles (il y en a que 4), là je teste la tienne pour confirmer que ça ne marche pas et ça fonctionne bien !
    1 seul mot : Bravo !

    Il ne me reste qu'à régler le problème de date voici un élément du output provenant du "csv" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <TESTS EOF="1" StartingRow="0" LastRow="9" RowCount="10" MaxRows="-1" RecordName="TEST">
      <TEST>
      <NUMVERSION>1</NUMVERSION> 
      <CODCYCL>TOTO</CODCYCL> 
      <LIBCYCL>Test 1</LIBCYCL> 
      <DTCYCL>01/01/2005</DTCYCL> 
      <OUT>0</OUT> 
      <NUMREPLIC>1</NUMREPLIC> 
      <NoName /> 
      </TEST>
    ...
    </TESTS>
    et provenant du "xml" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <DATAS>
      <DATA>
        <NUMVERSION> <![CDATA[ 1 ]]> </NUMVERSION>
        <CODCYCL> <![CDATA[ TOTO ]]></CODCYCL>
        <LIBCYCL> <![CDATA[ Test 1 ]]> </LIBCYCL>
        <DTPASS> <![CDATA[ 01/01/2005 ]]>  </DTPASS>
        <OUT>  <![CDATA[ 0 ]]> </OUT>
        <NUMREPLIC> <![CDATA[ 1 ]]> </NUMREPLIC>
      </DATA>
    ...
    </DATAS>
    Pas de problème avec le xml, mais avec le csv la date DTPASS devient '30/12/1899' dans la base à son ibtégration.
    Température de l'eau : 28 °
    Température extérieure : 32°
    Température au fond du verre : 50° ~ 55°
    ------ Mangez des bananes ----------

  15. #15
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    difficile comme ca de dire pourquoi.
    en général cette date signifie que le middleware a recu une valeur blnache ou incorrect. lors du passage de paramètre
    tu es avec quel middleware ?
    avec les traces en verbose as-tu plus d'info ?
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/04/2008, 12h54
  2. Importation d'un fichier .csv vers MySQL
    Par xenos dans le forum Requêtes
    Réponses: 2
    Dernier message: 14/08/2007, 10h19
  3. Réponses: 9
    Dernier message: 12/06/2007, 11h02
  4. [Wamp] Problème à l'import d'un fichier csv
    Par Pokerstar dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 25/05/2007, 09h15
  5. Pb d'import d'un fichier .csv
    Par clodius dans le forum Access
    Réponses: 2
    Dernier message: 17/04/2007, 10h18

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