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.
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.
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:
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 select ... from ... where ... for 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
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
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
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.
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
Voici un script perl minimal qui extrait une table au format XML:
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 :-)
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à!
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
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 :
voila ce que sa m'affiche
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";
line 113 = foreach (sort KEYS(%$r)) {<resultset xmlnssi="http://www.w3.org/2001/XMLSchema-instance">
<row>
Undefined subroutine in sort at ./sybase.pl line 113.
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>
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
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.
Sous ASA, il y a aussi une syntaxe "FOR XML" pour le SELECT !
Vous n'êtes pas en train de réinventer la roue ?
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.
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 ]
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 !
merci à toi fadace mais j'ai réussi à extraire les données que je souhaité
il faut juste que j'insére
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 open(FIC,>test) || die("Pb douverture\n"); #printf ou print je c'est pas trop ou??!! close(FIC);
deuxième probleme pour print ce code
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";
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 ('<?xml version="1.0" encoding="UTF-8"?>' '/n'); print ('<!DOCTYPE ficAlimMENESR SYSTEM "ficAlimMENESR.dtd">' '/n'); print ('<ficAlimMENESR>' '/n');
Mais erreur encore!!
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");
aider moi merci d'avance
On commence à sérieusement s'éloigner de Sybase - c'est plutôt une problématique perl - mais enfin...
ou alors
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");
(note le '.' pour concaténer les deux chaines de caractères)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 print FIC ('<?xml version="1.0" encoding="UTF-8"?>' . "\n");
ou encore
en utilisant l'opérateur qq() (quote operator) qui permet de spécifier n'importe quel caractère comme caractère de quote.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 print FIC qq(<?xml version="1.0" encoding="UTF-8"?>\n);
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
ca marche du tonnerre merci pour tout ce que tu as fait mpeppler je migre sur perl pour mais autre souciprint FIC ('<?xml version="1.0" encoding="UTF-8"?>' . "\n");
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager