将 XML header 信息提取到 SQL 服务器

Extract XML header information into SQL server

我的流程涉及每天获取一个大型 XML 文件。 我开发了一个 SSIS 包 (2008 r2),它首先通过 XSLT 摆脱了多个命名空间,然后使用 XML 源 object 将数据导入 40 个表(由于其复杂性)。

这是测试xml文件的简化版本


<?xml version="1.0" encoding="UTF-8"?>
<s:Test xmlns:s="http://@@@.@@.com/xml"              
<sequence>62</sequence>

<generated>2015-04-28T00:59:38</generated>
<report_date>2015-04-27</report_date>

    <orders>    
        <order>
        </order>
    </orders>

我的问题是:XML 源导入所有具有嵌套属性的订单。如何从 header 中提取 'report_date' 和 'generated'?

如有任何帮助,我们将不胜感激。

谢谢 标准差

您可以使用 XML 方法 value() 传递适当的 XPath/XQuery 表达式作为参数。对于演示,请考虑以下 table 和数据:

CREATE TABLE MyTable (id int, MyXmlColumn XML)
DECLARE @data XML = '<?xml version="1.0" encoding="UTF-8"?>
<s:Test xmlns:s="http://@@@.@@.com/xml">              
    <sequence>62</sequence>

    <generated>2015-04-28T00:59:38</generated>
    <report_date>2015-04-27</report_date>

    <orders>    
        <order>
        </order>
    </orders>
</s:Test>'
INSERT INTO Mytable VALUES(1,@data)

您可以使用以下查询获取 generatedreport_date 数据:

SELECT
    t.MyXmlColumn.value('(/*/generated)[1]','datetime') as generated
    , t.MyXmlColumn.value('(/*/report_date)[1]','date') as report_date
FROM Mytable t

SQL Fiddle Demo

输出:

generated               report_date
----------------------- -----------
2015-04-28 00:59:38.000 2015-04-27