我的流程涉及每天获取一个大型XML文件。 我开发了一个SSIS包(2008 r2),它首先通过XSLT删除多个命名空间,然后使用XML源对象将数据导入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源使用其嵌套属性导入所有Orders。如何提取报告日期&#39;和&#39;生成&#39;从标题?
非常感谢任何帮助。
由于 SD
答案 0 :(得分:0)
您可以使用XML方法value()
传递正确的XPath / XQuery表达式作为参数。对于演示,请考虑以下表格和数据:
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)
您可以使用以下查询获取generated
和report_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