Exemple d'import / export de données d'une table vers le format xml

Soyez le premier à donner votre avis sur cette source.

Vue 18 676 fois - Téléchargée 4 318 fois

Description

Ce source a été réalisé à la demande de BraWeb.

Ce programme est un exemple d'exportation directe de données d'une table (quelque soit la base de données) vers un fichier Xml et d'importation des données contenues dans ce fichier en passant par une table temporaire en mémoire (à ce moment il sera possible de retraiter les données si besoin).

Pour ce faire, j'ai utilisé 2 composants freeware dont je remercie les auteurs pour leur excellent travail.

N'hésitez pas à aller voir leur site :
http://tech.groups.yahoo.com/group/xmldataset/ et http://tech.groups.yahoo.com/group/memtable/

Les étapes pour la compilation :

1) Décompresser le contenu de l'archive dans un dossier (avec l'option de création des dossiers)
2) Installer les composants kbMemTable et XmlDataSet dans Delphi qui se trouvent dans le dossier "Package à installer"
3) Ouvrir et compiler le projet "TestXml"

En espérant que ce code aide d'autre développeur (et qu'il n'y a pas eu de source similaire lol).

Boris

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

blatour
Messages postés
26
Date d'inscription
mardi 6 mai 2003
Statut
Membre
Dernière intervention
11 décembre 2006

Bonjour,

Ben oui, nous codons principalement sous Delphi 6 pour le développement Win32 (par soucis d'interopérabilité avec nos anciens codes). D'ou les composants que nous utilisons.

Sinon concernant l'utilisation du Xml comme support de sauvegarde, il est clair que ce n'est pas forcement le meilleur et le plus optimisé. Mais comme dit DelphiProg, il faut penser à l'interopérabilité et surtout obtenir un support qui puisse perdurer dans le temps (un fichier de données dans un format texte pourra toujours être lu facilement quelque soit les changements effectués dans le SGBDR).
Concernant la taille que peut prendre un fichier au format Xml, il faut savoir qu'il est aussi possible de compresser les fichiers résultants au format Zip ou autre (Voir le composant DelphiZip que vous pouvez trouver à l'adresse suivante : http://www.delphizip.org/index.html).

D'autre part, il est tout à fait possible de ne pas utiliser le composant TXmlDataSet. Il suffit de créer dynamiquement dans sa base de données une table temporaire qui fera office de table tampon à l'importation. Rien de bien compliqué.

Pour faire un système d'Archivage / Restauration, on peut aussi simplement utiliser une autre base de données ayant la même structure que celle d'origine et déplacer dedans les données.

DelphiProg : oui en effet j'aurais pu dissocier la partie exportation et importation dans des unités séparées. Mais là c'était juste pour montrer un petit exemple.

Enfin bon, la seule limitation en fait est notre imagination. Ne sommes nous pas des artistes ;-)
cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
25
En matière de compacité, XML n'est surement pas le format idéal de stockage : il y a autant sinon plus de description des données que de données elles-mêmes.
En revanche, c'est aujourd'hui la clé de voûte de l'interopérabilité et c'est ce qui fait son fort.
Virtuellement, il n'existe pas de limite de volume pour un fichier XML.
Raisonnablement, il faut voir...
Pour la sauvegarde d'une BDD volumineuse, cela ira donc de la simple copie à l'archive compressée classique.
Mais bon, là on s'écarte du sujet de la source de Blatour et ce genre de discussion devrait se poursuivre plutôt sur le forum si tu es d'accord...
braWeb
Messages postés
111
Date d'inscription
samedi 21 août 2004
Statut
Membre
Dernière intervention
28 octobre 2014

Merci Delphiprog de cette explication c'est clair
Mais se que je veux avoir es que c'est l'outils idéale pour l'archivage (la sauvegarde ) des Données importé d'une Big database.

On est démarrer de cette discutions moi et BLATOUR l'outils d'archivage a mes connaissances XML est un langage semi-structurer exploité plus dans le coté Web (a cause que il a une structure d'arbre) qui permet la faciliter de circulation des données venu d'une BD comme ceci
Server DATABASE---XML----client
Se problème de sauvegarde n'existe pas avec des SGBDR par ce que il ont son propre outils de sauvegarde
Mais les autres SGBD il n'existe pas alors comment faire pour la sauvegarder on les copient complètement (BD ) ou les l'exporté dans des fichiers XML c'est on a choisir le 2eme Cas l'exporter alors quelle est la taille Maximale que peux accepter un document XML sachant que il c'est fichier semi-structuer et BD fichier structurer
cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
25
Si je peux me permettre de répondre à Braweb, cela dépend de l'analyseur XML utilisé. L'analyseur de chez Microsoft charge tout le fichier XML en mémoire pour être rapide. Il existe d'autres analyseurs qui lisent les noeuds qu'au fur et à mesure des besoins (SAX par exemple). Ils consomment moins de mémoire mais sont donc aussi moins rapides (temps de lecture sur disque). Puis, il y a les analyseurs XPATH qui permettent d'accéder directement à un noeud. Mais là, je n'en sais pas plus sur la méthode employée.
Si quelqu'un veut compléter ou rectifier...
cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
25
La suite de composants KbMemTable demande un gros travail d'adaptation pour fonctionner avec Delphi 7. Je n'ai donc pas pu l'essayer (par pure fainéantise, il faut bien l'avouer).
Quant à la suite TXmlDataSet, elle devra subir un lifting pour fonctionner sous Delphi .Net.
Malgré cela, on reconnait là un code de qualité où la simple lecture du source ainsi celle des commentaires en disent suffisamment sur le niveau de pratique.
Un petit regret : tu aurais pu mettre le code concernant l'importation et l'exportation dans une unité séparée, ce qui l'aurait rendu plus facilement réutilisable.
Félicitations.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.