Précédent   Forum des professionnels en informatique > Bases de données > Sybase > SQL Anywhere
SQL Anywhere Forum d'entraide concernant Sybase SQL Anywhere, la base de données mobile de Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/11/2007, 11h11   #1
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 98
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 98
Points : 12
Points : 12
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.
maloute80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2007, 11h44   #2
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
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 :
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
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2007, 13h14   #3
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 98
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 98
Points : 12
Points : 12
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
maloute80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2007, 13h40   #4
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
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
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2007, 14h41   #5
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 98
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 98
Points : 12
Points : 12
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.
maloute80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2007, 17h29   #6
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
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
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2007, 08h49   #7
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Voici un script perl minimal qui extrait une table au format XML:
Code :
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
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2007, 08h52   #8
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 98
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 98
Points : 12
Points : 12
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 :
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
Citation:
<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)) {
maloute80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2007, 09h36   #9
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 98
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 98
Points : 12
Points : 12
VOila le format xml que je doit retrouver à la fin.
Peut-tu m'aider à l'obtenir merci énormement d'avance
Code :
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>
maloute80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2007, 14h59   #10
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
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
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2007, 15h06   #11
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 98
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 98
Points : 12
Points : 12
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.
maloute80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2007, 09h03   #12
Rédacteur/Modérateur
 
Avatar de fadace
 
Homme Fabien Celaia
Administrateur de base de données
Inscription : octobre 2002
Messages : 3 779
Détails du profil
Informations personnelles :
Nom : Homme Fabien Celaia
Âge : 41
Localisation : Suisse

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

Informations forums :
Inscription : octobre 2002
Messages : 3 779
Points : 8 124
Points : 8 124
Envoyer un message via ICQ à fadace Envoyer un message via Skype™ à fadace
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 :
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 / Sybase / MS-SQL / DB2 / Informix / Postgresql
Administrateur SAP
Mes articles

Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !
fadace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2007, 09h13   #13
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 98
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 98
Points : 12
Points : 12
merci à toi fadace mais j'ai réussi à extraire les données que je souhaité

il faut juste que j'insére
Code :
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 :
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 :
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 :
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
maloute80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2007, 09h27   #14
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
On commence à sérieusement s'éloigner de Sybase - c'est plutôt une problématique perl - mais enfin...

Code :
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 :
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 :
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
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2007, 09h37   #15
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 98
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 98
Points : 12
Points : 12
Citation:
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
maloute80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h22.


 
 
 
 
Partenaires

Hébergement Web