使用SQL提取XML数据

保罗·科恩

我将以下XML数据存储在SQL表中

<CustomFields xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns="http://www.kaseya.com/vsa/2007/12/ServiceDeskDefinition.xsd">
<Field fieldName="ChangeRequest">No</Field>
<Field fieldName="ProblemRecord">No</Field>
<Field fieldName="Source">Email</Field>
<Field fieldName="KB_Article">No</Field>
<Field fieldName="OptimusRef">264692</Field>
<Field fieldName="TimeSpentOnTicket">0.25</Field>
<Field fieldName="PONumber" />
<Field fieldName="ResourceAssignedEngineer" />

我想做的是从存储过程中选择“ TimeSpentOnTicket值”。

有什么想法可以做到吗?

吉格罗克

这里的问题是您的XML。它是无效的,因此在修复它之前,实际上没有办法搜索它。一种简单的检查方法是使用在线工具,例如W3Schools的工具我看到的另一个问题是您引用的名称空间(xmlns)不再存在。我认为这也会使Postgres混乱,但是我不是100%。摄取时可能必须将其过滤掉。但是,修复XML之后,在适当的XML函数中使用XPath可以轻松解决问题

例如,使用下表:

CREATE TABLE BLA.TEMPTABLE (ID INT, MYXML XML)

然后,插入有效版本的XML:

INSERT INTO BLA.TEMPTABLE ( ID, MYXML )
SELECT 1 as ID, 
    '<?xml version="1.0" encoding="UTF-8"?>
    <CustomFields>
        <Field fieldName="ChangeRequest">No</Field>
        <Field fieldName="ProblemRecord">No</Field>
        <Field fieldName="Source">Email</Field>
        <Field fieldName="KB_Article">No</Field>
        <Field fieldName="OptimusRef">264692</Field>
        <Field fieldName="TimeSpentOnTicket">0.25</Field>
        <Field fieldName="PONumber" />
        <Field fieldName="ResourceAssignedEngineer" />
    </CustomFields>' as MYXML

然后,要查询出来,您可以执行以下操作(如果需要,可以使用this这样的工具测试XPath ):

SELECT
    tt.ID, 
    tt.MYXML,
    XPATH('/CustomFields//Field[@fieldName=''TimeSpentOnTicket'']/text()', tt.MYXML)
FROM
    BLA.TEMPTABLE tt

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用SQL从XML提取相关数据

来自分类Dev

SQL Server 2014:使用OpenXML和BulkColumn从XML提取数据

来自分类Dev

使用javascript提取XML数据

来自分类Dev

PostgreSQL:使用xpath从XML列提取数据

来自分类Dev

使用XMLTABLE和xquery从xml提取数据

来自分类Dev

使用XMLTable函数从Xml提取数据

来自分类Dev

使用ElementTree从XML提取数据的麻烦

来自分类Dev

使用PHP simpleXML提取XML数据

来自分类Dev

C#使用Linq从xml提取数据

来自分类Dev

使用Powershell从XML源提取数据

来自分类Dev

使用Python从XML读取/提取数据

来自分类Dev

使用python从xml提取特定数据

来自分类Dev

在Python中使用ElementTree从XML提取数据

来自分类Dev

使用XPath无法从XML文档提取数据

来自分类Dev

无法使用JAVA从网站提取xml数据

来自分类Dev

如何使用xpath或查询从xml提取数据

来自分类Dev

使用 Python 3 从 xml 中提取数据

来自分类Dev

使用Python从xml文件中提取数据

来自分类Dev

使用 python 提取和绘制 XML 数据

来自分类Dev

使用XQuery从SQL中的XML字符串中提取数据

来自分类Dev

使用SQL从字段中提取数值数据

来自分类Dev

使用SQL条件提取定宽数据

来自分类Dev

从SQL Server的XML执行计划中提取数据

来自分类Dev

读取SQL中的XML,不提取任何数据

来自分类Dev

提取与SQL Server中XML数组内的条件匹配的数据

来自分类Dev

读取SQL中的XML,不提取任何数据

来自分类Dev

如何在SQL中从xml节点提取数据

来自分类Dev

Python从xml提取数据

来自分类Dev

如何从XML提取数据