将分层数据导出为XML

时间:2009-04-20 15:55:26

标签: sql-server xml

我们的数据库包含分层“项目”。每个项目都在单独的表格中包含详细信息。例如。项目可以是文件夹或文件。现在我想将项目的子项导出为XML。出于性能原因,我想在SP内部执行此操作。当然,可以编写基于游标的SP,但游标往往很慢。更好的是 CTE (带有...)和 FOR XML ,但我不知道如何将CTE和FOR XML结合起来,包括详细信息表信息。

DDL

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导出

<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>

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

如果数据适合内存,将3个表(相关块)导出到您喜欢的编程语言中,然后组装树。或者,将表转储为文本文件,例如.CSV格式,然后扫描它们。

我会使用Perl,但Ruby或Python也可能是很好的选择。或者您自己的选择/必要语言。

逃离数据库,其余的应该是相当直接的。除了“提取时刻”方面,报告转储不需要事务。获取数据,然后在闲暇时咀嚼它。