gpt4 book ai didi

c# - 使用外键将 SQL Server 2012 数据库导出到 XML

转载 作者:太空宇宙 更新时间:2023-11-03 11:17:41 27 4
gpt4 key购买 nike

我希望在导出到 xml 的基础上执行此线程中的操作 SQL DB to XML是对于作为外键的每一行,我也想包括该引用的 xml 表示。

例如员工表:

EID(PK)   Name  Supervisor(FK)  
1 John NULL
2 Kevin 1

应将 XML 输出为:

<Employees>  
<Employee>
<EID>1</EID>
<Name>John</Name>
<Supervisor>NULL</Supervisor>
</Employee>
<Employee>
<EID>2</EID>
<Name>Kevin</Name>
<Supervisor>
<EID>1</EID>
<Name>John</Name>
<Supervisor>NULL</Supervisor>
</Supervisor>
</Employee>
</Employees>

我正在寻找 C#(如果我能找到一种方法知道 DataColumn 是外键)或 SSIS 的解决方案。

最佳答案

试试这个代码,also on SQL Fiddle .通过在 ELEMENTS 指令上指定可选的 XSINIL 参数,您可以请求还为 NULL 值创建一个元素。在这种情况下,为每个 NULL 列值返回一个 xsi:nil 属性设置为 TRUE 的元素,并且将在根目录创建对 xmlns 命名空间 的引用.

DECLARE @Employee TABLE([EID] INT, [Name] NVARCHAR(5), [Supervisor] INT);

INSERT INTO @Employee
([EID], [Name], [Supervisor])
VALUES
(1, 'John', NULL),
(2, 'Kevin', 1),
(3, 'Paul', 1),
(4, 'Joe', 2);

SELECT T1.EID, T1.[Name],
(SELECT T2.EID, T2.[Name]
FROM @Employee T2
WHERE T2.EID = T1.Supervisor
FOR XML PATH('Supervisor'),TYPE)
FROM @Employee T1
FOR XML PATH('Employee'), ROOT ('Employees'), Elements XSINIL

返回:

<Employees xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Employee>
<EID>1</EID>
<Name>John</Name>
</Employee>
<Employee>
<EID>2</EID>
<Name>Kevin</Name>
<Supervisor>
<EID>1</EID>
<Name>John</Name>
</Supervisor>
</Employee>
<Employee>
<EID>3</EID>
<Name>Paul</Name>
<Supervisor>
<EID>1</EID>
<Name>John</Name>
</Supervisor>
</Employee>
<Employee>
<EID>4</EID>
<Name>Joe</Name>
<Supervisor>
<EID>2</EID>
<Name>Kevin</Name>
</Supervisor>
</Employee>
</Employees>

关于c# - 使用外键将 SQL Server 2012 数据库导出到 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12153773/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com