检索导入到 SQL Server 的多个 XML 的特定字段

迈克 B。

我有多个具有相同结构的 XML 文件,我已使用以下命令将它们导入SQL Server 2017

DDL:

CREATE DATABASE xmlFiles
GO

USE xmlFiles
CREATE TABLE tblXMLFiles (IntCol int, XmlData xml);
GO

DML:

USE xmlFiles
INSERT INTO [dbo].[tblXMLFiles](XmlData) SELECT * FROM OPENROWSET(BULK 'C:\xmls\1.xml', SINGLE_BLOB) AS x;
INSERT INTO [dbo].[tblXMLFiles](XmlData) SELECT * FROM OPENROWSET(BULK 'C:\xmls\2.xml', SINGLE_BLOB) AS x;
…
INSERT INTO [dbo].[tblXMLFiles](XmlData) SELECT * FROM OPENROWSET(BULK 'C:\xmls\N.xml', SINGLE_BLOB) AS x;

现在我想查询数据:

USE xmlFiles
GO

DECLARE @XML AS XML, @hDoc AS INT, @SQL NVARCHAR (MAX)

SELECT @XML = XmLData FROM tblXMLFiles

EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML

SELECT Surname , GivenNames
FROM OPENXML(@hDoc, 'article/ref-list/ref/mixed-citation')
WITH 
(
    Surname [varchar](100) 'string-name/surname',
    GivenNames [varchar](100) 'string-name/given-names'
)

EXEC sp_xml_removedocument @hDoc
GO

查询正在运行,但问题是它仅在数据源表中只有一行时才返回数据 — tblXMLFiles如果我添加多于一行,我会得到空的结果集。

重要提示:
如果我将语句添加到外部SELECT子句 (SELECT @XML = XmLData…) 中TOP,则情况会发生变化,然后它会根据TOP返回特定行号的查询数据

问题:
如何不仅在表中有一行而且在多行时检索数据?

修吾

FROM OPENXML使用相应的 SP 准备和删除文档已过时,不应再使用。而是使用XML 数据类型提供的适当方法

如果没有您的 XML 示例,很难提供解决方案,但我的魔法水晶球告诉我,它可能是这样的:

SELECT f.IntCol 
      ,mc.value('(string-name/surname)[1]','nvarchar(max)') AS Surname
      ,mc.value('(string-name/given-names)[1]','nvarchar(max)') AS GivenNames
FROM dbo.tblXMLFiles AS f
OUTER APPLY f.XmlData.nodes('article/ref-list/ref/mixed-citation') AS A(mc)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用条件语句将'xml'节点动态导入到SQL Server中

来自分类Dev

使用条件语句将'xml'节点动态导入到SQL Server中

来自分类Dev

使用XML C#将datagridview中的多个图像字节[]代码保存并检索到SQL Server

来自分类Dev

从特定行和列开始的 Excel 工作表数据导入到数据网格,然后导入 SQL Server 表、WPF

来自分类Dev

尝试将FoxPro DBF文件导入到SQL Server

来自分类Dev

Webmatrix csv导入到SQL Server Compact

来自分类Dev

将Access 2013表导入到SQL Server

来自分类Dev

XML到Sql Server

来自分类Dev

从SQL Server中的多个XML列查询

来自分类Dev

SQL Server:FOR XML特定输出

来自分类Dev

如何从xml中检索元素值并从SQL Server获得多个命名空间?

来自分类Dev

如何从xml中检索元素值并从SQL Server获得多个命名空间?

来自分类Dev

将XML导入SQL Server

来自分类Dev

SQL Server Pivot在多个字段上

来自分类Dev

使用导入导出向导将DAT文件内容导入到SQL Server表中-错误

来自分类Dev

从xml导入到wordpress

来自分类Dev

如何以与SQL Server中相同的顺序将列从SQL导入到Excel中?

来自分类Dev

从 xml 字段 sql server 中选择值

来自分类Dev

如何更新 SQL Server 中的 xml 字段

来自分类Dev

SQL Server从多个表中检索数据

来自分类Dev

使用脚本将xml文件数据导入到sql

来自分类Dev

使用 vb6 通过 MSFlexigrid 将 XML 数据导入到 SQL 表

来自分类Dev

从CSV文件将前1000条记录导入到SQL Server

来自分类Dev

将数据类型DECIMAL从CSV导入到SQL Server

来自分类Dev

将图像从文件夹导入到SQL Server表中

来自分类Dev

使用空单元格将csv导入到sql server

来自分类Dev

使用Excel VBA ADODB从CSV批量导入到SQL Server

来自分类Dev

如何将现有的本地tatuk形状导入到MS SQL Server

来自分类Dev

导入到SQL Server 2012中时,Excel中的日期时间值意外更改

Related 相关文章

  1. 1

    使用条件语句将'xml'节点动态导入到SQL Server中

  2. 2

    使用条件语句将'xml'节点动态导入到SQL Server中

  3. 3

    使用XML C#将datagridview中的多个图像字节[]代码保存并检索到SQL Server

  4. 4

    从特定行和列开始的 Excel 工作表数据导入到数据网格,然后导入 SQL Server 表、WPF

  5. 5

    尝试将FoxPro DBF文件导入到SQL Server

  6. 6

    Webmatrix csv导入到SQL Server Compact

  7. 7

    将Access 2013表导入到SQL Server

  8. 8

    XML到Sql Server

  9. 9

    从SQL Server中的多个XML列查询

  10. 10

    SQL Server:FOR XML特定输出

  11. 11

    如何从xml中检索元素值并从SQL Server获得多个命名空间?

  12. 12

    如何从xml中检索元素值并从SQL Server获得多个命名空间?

  13. 13

    将XML导入SQL Server

  14. 14

    SQL Server Pivot在多个字段上

  15. 15

    使用导入导出向导将DAT文件内容导入到SQL Server表中-错误

  16. 16

    从xml导入到wordpress

  17. 17

    如何以与SQL Server中相同的顺序将列从SQL导入到Excel中?

  18. 18

    从 xml 字段 sql server 中选择值

  19. 19

    如何更新 SQL Server 中的 xml 字段

  20. 20

    SQL Server从多个表中检索数据

  21. 21

    使用脚本将xml文件数据导入到sql

  22. 22

    使用 vb6 通过 MSFlexigrid 将 XML 数据导入到 SQL 表

  23. 23

    从CSV文件将前1000条记录导入到SQL Server

  24. 24

    将数据类型DECIMAL从CSV导入到SQL Server

  25. 25

    将图像从文件夹导入到SQL Server表中

  26. 26

    使用空单元格将csv导入到sql server

  27. 27

    使用Excel VBA ADODB从CSV批量导入到SQL Server

  28. 28

    如何将现有的本地tatuk形状导入到MS SQL Server

  29. 29

    导入到SQL Server 2012中时,Excel中的日期时间值意外更改

热门标签

归档