2009-04-20 10 views
0

Notre base de données contient les "articles" hiérarchiques. Chaque article a des informations détaillées dans une table séparée. Par exemple. un élément peut être un dossier ou un fichier. Maintenant, je voudrais exporter les enfants d'un élément en XML. Pour des raisons de performances, je voudrais le faire dans un SP. Bien sûr, il est possible d'écrire un SP basé sur un curseur, mais les curseurs ont tendance à être lents. Beaucoup mieux sont CTE (avec ...) et pour XML, mais je ne sais pas comment combiner CTE et FOR XML, y compris les informations de la table de détail.Exporter des données hiérarchiques en XML

LDD

create table items (
    itemid integer, 
    parent_itemid integer 
) 

create table folder (
    folderid integer, 
    itemid integer, 
    foldername varchar(50), 
    [..] 

create table file (
    fileid integer, 
    itemid integer, 
    filename varchar(50), 
    [..] 

XML Export

<folder id="1" foldername="Top-Folder"> 
<folder id="2" foldername="Sub-Folder"> 
    <file id="10" filename="Subdoc.doc"/> 
</folder> 
<file id="10" filename="Doc1.doc"/> 
<file id="11" filename="Doc2.doc"/> 
</folder> 

Répondre

1

Si les données s'adapter dans la mémoire, exporter les 3 tables (chunks pertinents) dans votre langage de programmation favori, puis assembler l'arbre. Ou, vider les tables dans des fichiers texte, tels que le format .CSV, puis les analyser.

J'utiliserais Perl, mais Ruby ou Python seraient probablement de bons choix. Ou votre propre langue de choix/nécessité.

Échapper à la base de données, et le reste devrait être assez simple. Outre l'aspect "moment d'extraction", les vidages de rapports n'ont pas besoin de transactions. Obtenez les données, puis mâchez-le à votre guise.

2
+0

Très intéressant, en particulier la partie où les mots clés procédure stockée ont rendu « juste ». Quand je suis arrivé à la partie clickey/dialogy, mes yeux ont glacé, car je ne suis pas familier avec le produit (et je me demande comment valider les clics de souris dans le contrôle des révisions) – Roboprog

+0

sauvegarder le projet BIDS dans Subversion ou juste le. Fichier dtsx qui est juste XML de toute façon – SQLMenace

Questions connexes