使用使用 Excel 标记的 SQL Server 生成 XML
Posted
技术标签:
【中文标题】使用使用 Excel 标记的 SQL Server 生成 XML【英文标题】:Producing XML using SQL Server which uses Excel tags 【发布时间】:2020-03-17 09:33:40 【问题描述】:我正在尝试实现以下输出:
<Cell ss:StyleID="s87">
<Data ss:Type="String">N</Data>
<NamedCell ss:Name="_FilterDatabase"/>
</Cell>
我的 SQL 代码如下所示:
SELECT
'String' AS 'Data/@type',
[Submit] AS [Data],
NULL
FROM
dbo.[XML_Table]
FOR XML PATH ('Row')
生成的输出如下所示
<Row>
<Data type="String">Y</Data>
</Row>
如何让它看起来像这样:
<Cell ss:StyleID="s87">
<Data ss:Type="String">Y</Data>
<NamedCell ss:Name="_FilterDatabase"/>
</Cell>
谢谢
显示所有字段的示例表输出,但我只是使用提交字段作为示例:
【问题讨论】:
表中的数据实际上看起来像什么? 另外,您得到的输出表明Submit
的值为'Y'
,但在您的预期输出中它需要一个'N'
的值?
对不起,输出应该是'Y',我复制了错误的行结果,我会看看我是否可以在这里获取表格,但它确实包含公司数据,所以我需要屏蔽它,我我正在解决的是我如何使用 sql 将 您可以使用此代码非常接近 - 假设您在 SQL Server 的某个表中的 XML 中获得输出的所有元素和属性值:
DECLARE @Input TABLE (StyleId VARCHAR(20),
CellType VARCHAR(20),
CellData VARCHAR(20),
CellName VARCHAR(50))
INSERT INTO @Input (StyleId, CellType, CellData, CellName)
VALUES ('s87', 'String', 'Y', '_FilterDatabase');
WITH XMLNAMESPACES('urn:test' AS ss)
SELECT
StyleId AS '@ss:StyleID',
CellType AS 'Data/@ss:Type',
CellData AS 'Data',
CellName AS 'NamedCell/@ss:Name',
'' AS 'NamedCell'
FROM
@Input
FOR XML PATH('Cell')
这导致输出:
<Cell xmlns:ss="urn:test" ss:StyleID="s87">
<Data ss:Type="String">Y</Data>
<NamedCell ss:Name="_FilterDatabase"></NamedCell>
</Cell>
不过,我看不出您如何“跳过”实际声明 XML 命名空间别名 - 所以它会显示在您的 <Cell>
***节点上。
【讨论】:
谢谢你,这正是我想要的,我猜我可以添加更多,因为某些字段似乎也有索引属性等?有些没有过滤的数据库。以上是关于使用使用 Excel 标记的 SQL Server 生成 XML的主要内容,如果未能解决你的问题,请参考以下文章
使用 VBA 在 SQL Server 中上传 Excel 文件数据
使用asp.net将Excel文件数据导入Sql server