我们的数据库包含分层“项目”。每个项目都在单独的表格中包含详细信息。例如。项目可以是文件夹或文件。现在我想将项目的子项导出为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>
答案 0 :(得分:2)
答案 1 :(得分:1)
如果数据适合内存,将3个表(相关块)导出到您喜欢的编程语言中,然后组装树。或者,将表转储为文本文件,例如.CSV格式,然后扫描它们。
我会使用Perl,但Ruby或Python也可能是很好的选择。或者您自己的选择/必要语言。
逃离数据库,其余的应该是相当直接的。除了“提取时刻”方面,报告转储不需要事务。获取数据,然后在闲暇时咀嚼它。