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

SQL Anywhere Sybase Discussion :

[ASA] Extraction Sybase =>Moulinette(script)=> XML


Sujet :

SQL Anywhere Sybase

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 26
    Points
    26
    Par défaut [ASA] Extraction Sybase =>Moulinette(script)=> XML
    Bonjour,

    Je voudrai savoir si cela est possible extraire une base de donnée Sybase en format XML via un script ou autre.

    Si vous voulais d'autre information n'hésitez pas,

    Merci,

    Cordialement,
    Maloute.

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    C'est évidemment possible... tout dépend du niveau d'effort qu'on voudra fournir, et de la version de Sybase.

    Sur les version récentes on peut déjà exécuter des requêtes qui retournent les données au format XML:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select ... 
      from ...
     where ...
    for XML
    Autrement, on peut évidemment imaginer toutes sortes de scripts ou programmes (perl, java, etc) qui pourraient générer les données au format XML.
    Pour perl on peut certainement s'appuyer sur un des modules de support XML (voir http://search.cpan.org pour plus de détails sur les modules perl), et sur DBI/DBD::Sybase pour extraire les données.

    Michael
    Michael Peppler
    Membre de TeamSybase - www.teamsybase.com

    "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 26
    Points
    26
    Par défaut
    Merci de ton aide et de tes explications,

    En revanche ce script n'hésiste-il pas déjà ? car aprés un débrousaillage de google je n'est pas trouver de piste (ce que je cherche n'est pas la solutins toute faite, c'est le début ou un exemple de code qui pourrai m'aider à avancer)

    ps : je ne suis pas programmeur je suis bidouilleur en devellopement

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Pour quelle version d'ASE ?

    Michael
    Michael Peppler
    Membre de TeamSybase - www.teamsybase.com

    "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 26
    Points
    26
    Par défaut
    SQL anywhere studio 7.0.2
    Sybase central viewer version 4.0

    désoler je n'est pas trop info si tu as autre question hésite pas car j'ai vraiment besoin Eclaicicement.

    merci encore à toi.

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Ah - je ne connais pas bien ASA/SQL Anywhere, mais je vais voir si je peux concocter qqch - ce soir ou demain.

    Michael
    Michael Peppler
    Membre de TeamSybase - www.teamsybase.com

    "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Voici un script perl minimal qui extrait une table au format 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
    21
    22
    23
    24
    25
    26
    27
    28
     
    #!/usr/bin/perl
     
    use DBI;
     
    # On se connect à la base - remplacer Sybase par ASAny
    # pour une base SQLANywhere (et installer le module DBD::ASAny)
    my $dbh = DBI->connect('dbi:Sybase:server=<mon_data_server>', 'sa', 'mon_password');
     
    # Faire la requête
    my $sth = $dbh->prepare("select * from la_table_a_dumper");
    $sth->execute;
     
    print "<resultset xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n";
     
    # On va chercher chaque ligne sous la forme d'un tableau associatif
    # cad que l'index dans le tableau est le nom de la colonne
    while(my $r = $sth->fetchrow_hashref) {
        print "  <row>\n";
        # Pour chaque colonne, on imprime <nom>valeur</nom>
        foreach (sort keys(%$r)) {
            print "    <$_>$r->{$_}</$_>\n";
        }
        print "  </row>\n";
    }
    print "</resultset>\n";
     
    # Et voilà!
    La généralisation de ceci pour extraire toutes les tables est laissée comme un exercice - à faire en VB, perl, C, C++ ou ce que tu veux :-)

    Michael
    Michael Peppler
    Membre de TeamSybase - www.teamsybase.com

    "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 26
    Points
    26
    Par défaut
    mpeppler merci beaucoup à toi pour tout ce que tu as fait.

    Mais pour le resultat voila beug donc il me dit que c'est le code
    pour cette parti :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    print "<resultset xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n";
    while(my $r = $request->fetchrow_hashref) {
        print "  <row>\n";
        foreach (sort KEYS(%$r)) {
            print "    <$_>$r->{$_}</$_>\n";
        }
        print "  </row>\n";
    }
    print "</resultset>\n";
    voila ce que sa m'affiche
    <resultset xmlnssi="http://www.w3.org/2001/XMLSchema-instance">
    <row>
    Undefined subroutine in sort at ./sybase.pl line 113.
    line 113 = foreach (sort KEYS(%$r)) {

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 26
    Points
    26
    Par défaut
    VOila le format xml que je doit retrouver à la fin.
    Peut-tu m'aider à l'obtenir merci énormement d'avance
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE ficAlimMENESR SYSTEM "ficAlimMENESR.dtd">
    <ficAlimMENESR>
     
    <addRequest>
    <operationalAttributes><attr name="categoriePersonne"><value>"type"</value></attr></operationalAttributes>
    <identifier><id>"valeurx.1"</id></identifier>
    <attributes>
    <attr name="ENTPersonJointure"><value>"valeurx.1"</value></attr>
    <attr name="ENTPersonDateNaissance"><value>"date"</value></attr>
    <attr name="ENTPersonNomPatro"><value>"nom1"</value></attr>
    <attr name="sn"><value>"nom1"</value></attr>
    <attr name="givenName"><value>"prénom1"</value></attr>
    <attr name="ENTPersonAutresPrenoms"><value>"prénom1"</value></attr>
    <attr name="personalTitle"><value>"Mlle,Mr,Mme"</value></attr>
    <attr name="ENTEleveParents"><value>"valeur2"</value><value>"valeur3"</value></attr>
    <attr name="ENTElevePere"><value>"valeur2"</value></attr>
    <attr name="ENTEleveMere"><value>"valeur3"</value></attr>
    <attr name="ENTEleveAutoriteParentale"><value>"valeur"</value></attr>
    <attr name="ENTElevePersRelEleve1"><value>"valeur"</value></attr>
    <attr name="ENTEleveQualitePersRelEleve1"><value>"valeur"</value></attr>
    <attr name="ENTElevePersRelEleve2"><value>"valeur"</value></attr>
    <attr name="ENTEleveQualitePersRelEleve2"><value>"valeur"</value></attr>
    <attr name="ENTEleveBoursier"><value>"N/O"</value></attr>
    <attr name="ENTEleveRegime"><value>"1/2 PENSION,Externe,Interne"</value></attr>
    <attr name="ENTEleveTransport"><value>"N/O"</value></attr>
    <attr name="ENTEleveStatutEleve"><value>"SCOLAIRE,Apprenti"</value></attr>
    <attr name="ENTEleveMEF"><value>"valeur4"</value></attr>
    <attr name="ENTEleveLibelleMEF"><value>"valeur"</value></attr>
    <attr name="ENTEleveNivFormation"><value>"valeur"</value></attr>
    <attr name="ENTEleveFiliere"><value>"valeur"</value></attr>
    <attr name="ENTEleveEnseignements"><value>"valeur1.1"</value><value>"valeur1.2"</value><value>"valeur1.3"</value><value>"valeur1.n"</value></attr>
    <attr name="ENTPersonStructRattach"><value>"valeur5"</value></attr>
    <attr name="ENTEleveClasses"><value>"valeur6"</value></attr>
    <attr name="ENTEleveGroupes"><value>"valeur7"</value></attr>
    </attributes>
    </addRequest>
     
    <addRequest>
    <operationalAttributes><attr name="categoriePersonne"><value>"type"</value></attr></operationalAttributes>
    <identifier><id>"valeurx.2"</id></identifier>
    <attributes>
    <attr name="ENTPersonJointure"><value>"valeurx.2"</value></attr>
    <attr name="ENTPersonDateNaissance"><value>"date"</value></attr>
    <attr name="ENTPersonNomPatro"><value>"nom2"</value></attr>
    <attr name="sn"><value>"nom2"</value></attr>
    <attr name="givenName"><value>"prénom2"</value></attr>
    <attr name="ENTPersonAutresPrenoms"><value>"prénom2"</value></attr>
    <attr name="personalTitle"><value>"Mlle,Mr,Mme"</value></attr>
    <attr name="ENTEleveParents"><value>"valeur2"</value><value>"valeur3"</value></attr>
    <attr name="ENTElevePere"><value>"valeur2"</value></attr>
    <attr name="ENTEleveMere"><value>"valeur3"</value></attr>
    <attr name="ENTEleveAutoriteParentale"><value>"valeur"</value></attr>
    <attr name="ENTElevePersRelEleve1"><value>"valeur"</value></attr>
    <attr name="ENTEleveQualitePersRelEleve1"><value>"valeur"</value></attr>
    <attr name="ENTElevePersRelEleve2"><value>"valeur"</value></attr>
    <attr name="ENTEleveQualitePersRelEleve2"><value>"valeur"</value></attr>
    <attr name="ENTEleveBoursier"><value>"N/O"</value></attr>
    <attr name="ENTEleveRegime"><value>"1/2 PENSION,Externe,Interne"</value></attr>
    <attr name="ENTEleveTransport"><value>"N/O"</value></attr>
    <attr name="ENTEleveStatutEleve"><value>"SCOLAIRE,Apprenti"</value></attr>
    <attr name="ENTEleveMEF"><value>"valeur4"</value></attr>
    <attr name="ENTEleveLibelleMEF"><value>"valeur"</value></attr>
    <attr name="ENTEleveNivFormation"><value>"valeur"</value></attr>
    <attr name="ENTEleveFiliere"><value>"valeur"</value></attr>
    <attr name="ENTEleveEnseignements"><value>"valeur1.1"</value><value>"valeur1.2"</value><value>"valeur1.3"</value><value>"valeur1.n"</value></attr>
    <attr name="ENTPersonStructRattach"><value>"valeur5"</value></attr>
    <attr name="ENTEleveClasses"><value>"valeur6"</value></attr>
    <attr name="ENTEleveGroupes"><value>"valeur7"</value></attr>
    </attributes>
    </addRequest>
     
    "etc"
     
    </ficAlimMENESR>

  10. #10
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Le problème c'est que le site a mis du code en majuscule...

    Le KEYS() doit être keys() - et ensuite cela devrait aller beaucoup mieux.

    Ceci étant - si tu ne connais pas perl il serait probablement judicieux d'essayer dans un language que tu connais mieux - le principe restant le même.

    Michael
    Michael Peppler
    Membre de TeamSybase - www.teamsybase.com

    "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 26
    Points
    26
    Par défaut
    Désoler je n'est pas fait attention pour le KEYS() en keys() que jai modifié dans mon commentaire mais bon peu importe encore une fois tu est là et ca marche merci.

    Encore une chose et oui je suis relou et heureusement que tu m'a pas en face,
    est-ce posible que ce script qui en faite me fait tout la liste de ma requete soit directement intégré dans un fichier .txt ou .xml(mais faut pas réver) pour une meilleur relecture !!?!!

    je c'est que la fonction open() close() existe mais pour l'intégrer au code que tu ma mit je ne c'est pas trop comment faire.

    Merci à toi pour ton courage et ta patience.

  12. #12
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 551
    Points
    19 551
    Billets dans le blog
    25
    Par défaut
    Sous ASA, il y a aussi une syntaxe "FOR XML" pour le SELECT !

    Vous n'êtes pas en train de réinventer la roue ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Instruction SELECT
    Description Récupérer des informations dans la base de données.
    Syntaxe [ WITH vues_temporaires ]
    SELECT [ ALL | DISTINCT ] [ limitation_lignes ] liste_sélection
    [ INTO { liste_var_hôte | liste_variables | nom_table } ]
    [ FROM expression_table ]
    [ WHERE condition_recherche ]
    [ GROUP BY [ expression_group_by ]
    [ HAVING condition_recherche ]
    [ WINDOW nom_fenêtre AS spécif_fenêtre
    [ , nom_fenêtre AS spécif_fenêtre ... ] ]
    [ ORDER BY { expression | entier } [ ASC | DESC], . . . ]
    [ FOR { UPDATE [ concurrence_curseurs ] | READ ONLY } ]
    [ FOR XML mode_xml ]
    Reste à voir si c'est possible en v.7 A l'ère de la 10, la doc 7 est succinte et il n'y a pas cett clause.

    Pourquoi utiliser de nouvelle techno (XML) avec d'aussi vieilles versions ? Pourquoi ne pas commencer par migrer en 9 ?
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 26
    Points
    26
    Par défaut
    merci à toi fadace mais j'ai réussi à extraire les données que je souhaité

    il faut juste que j'insére
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    open(FIC,’>test’) || die("Pb d’ouverture\n");
    #printf ou print je c'est pas trop ou??!! 
    close(FIC);
    dans ce code là que mpeppler ma fournit avec la bonne syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    print "<resultset xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n";
     
    while(my $r = $sth->fetchrow_hashref) {
        print "  <row>\n";
        foreach (sort KEYS(%$r)) {
            print "    <$_>$r->{$_}</$_>\n";
        }
        print "  </row>\n";
    }
    print "</resultset>\n";
    deuxième probleme pour print ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    print ('<?xml version="1.0" encoding="UTF-8"?>' '/n');
    print ('<!DOCTYPE ficAlimMENESR SYSTEM "ficAlimMENESR.dtd">' '/n');
    print ('<ficAlimMENESR>' '/n');
    il me met un message erreur mais de toute facon je vais devoir inclure dans le fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        print FIC ('<?xml version="1.0" encoding="UTF-8"?>' "\n");
        print FIC ('<!DOCTYPE ficAlimMENESR SYSTEM "ficAlimMENESR.dtd">' "\n");
        print FIC ('<ficAlimMENESR>' "\n");
    Mais erreur encore!!
    aider moi merci d'avance

  14. #14
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    On commence à sérieusement s'éloigner de Sybase - c'est plutôt une problématique perl - mais enfin...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        print FIC ("<?xml version=\"1.0\" encoding="UTF-8"?>\n");
        print FIC ("<!DOCTYPE ficAlimMENESR SYSTEM \"ficAlimMENESR.dtd\">\n");
        print FIC ("<ficAlimMENESR>\n");
    ou alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print FIC ('<?xml version="1.0" encoding="UTF-8"?>' . "\n");
    (note le '.' pour concaténer les deux chaines de caractères)

    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print FIC qq(<?xml version="1.0" encoding="UTF-8"?>\n);
    en utilisant l'opérateur qq() (quote operator) qui permet de spécifier n'importe quel caractère comme caractère de quote.

    Ceci étant cette discussions devrait migrer vers le forum perl...

    Michael
    Michael Peppler
    Membre de TeamSybase - www.teamsybase.com

    "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 26
    Points
    26
    Par défaut
    print FIC ('<?xml version="1.0" encoding="UTF-8"?>' . "\n");
    ca marche du tonnerre merci pour tout ce que tu as fait mpeppler je migre sur perl pour mais autre souci

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

Discussions similaires

  1. [Probleme] Extraction Sybase => XML
    Par maloute80 dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 26/11/2007, 13h33
  2. [débutant]extraction des données d'un fichier xml simple
    Par ekram dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 14/03/2007, 12h24
  3. [ASA]Connexion sybase sur serveur a distance
    Par tit_oune dans le forum Sybase
    Réponses: 2
    Dernier message: 11/05/2006, 12h43
  4. code action script et xml valide mais ne fonctionne pas
    Par artotal dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 27/03/2006, 16h32
  5. Extraction de donnés dans un fichier XML
    Par ANISSS dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 27/01/2006, 13h16

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