求教SSIS中Webservice组件和XML数据源的使用问题
有一个第三方Webservice接口,我使用SSIS的Webservice组件抓取到一个XML文件,内容如下:
<?xml version="1.0" encoding="utf-16"?>
<Report xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<TaskName xmlns="http://send.com/">7.26-17点正式发送</TaskName>
<Subject xmlns="http://send.com/">奥运跳水金牌榜</Subject>
<SenderName xmlns="http://send.com/" />
<SenderEmail xmlns="http://send.com/" />
<ReplyName xmlns="http://send.com/" />
<ReplyEmail xmlns="http://send.com/" />
<SendDate xmlns="http://send.com/">2012-07-26T17:00:00</SendDate>
<FinishDate xmlns="http://send.com/">2012-07-26T17:02:58</FinishDate>
<Total xmlns="http://send.com/">1267</Total>
<Sent xmlns="http://send.com/">1267</Sent>
<HardBounce xmlns="http://send.com/">188</HardBounce>
<SoftBounce xmlns="http://send.com/">21</SoftBounce>
<OpenCount xmlns="http://send.com/">105</OpenCount>
<UniqueOpenCount xmlns="http://send.com/">83</UniqueOpenCount>
<MailClicked xmlns="http://send.com/">5</MailClicked>
<LinkClicked xmlns="http://send.com/">0</LinkClicked>
<AllClicked xmlns="http://send.com/">6</AllClicked>
<Unsubscribe xmlns="http://send.com/">3</Unsubscribe>
</Report>
希望通过使用XML任务组件和XML数据源导入到数据库中,SQL SERVER 2008 R2
初步的一个想法是用XML任务把原文件转换成一个简单的XML文件,再用数据流中的XML源把数据导入数据库。
遇到一个问题:通过XML源中的生成XSD文件的按钮,生成的XSD文件,但是数据源列中却没有显示可用的列,组件提示无输入和输出。
求高手帮忙指点一下这个方法中需要的XSLT和XSD文件应该如何生成,能给出文件内容最好,谢谢。
------解决方案--------------------LZ可以使用sp_xml_preparedoucment和openxml来操作啊
DECLARE @hdoc int
DECLARE @doc varchar(1000)
SET @doc ='
<ROOT>
<Customer CustomerID="VINET" ContactName="Paul Henriot">
<Order CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00">
<OrderDetail OrderID="10248" ProductID="11" Quantity="12"/>
<OrderDetail OrderID="10248" ProductID="42" Quantity="10"/>
</Order>
</Customer>
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">
<Order CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00">
<OrderDetail OrderID="10283" ProductID="72" Quantity="3"/>
</Order>
</Customer>
</ROOT>'
EXEC sp_xml_preparedocument @hdoc OUTPUT, @doc
--上面只是读取了XML,要想获取XML数据还需要使用OPENXML,代码如下:
SELECT *
FROM openxml(@hdoc,'/ROOT/Customer',1)
WITH (CustomerID VARCHAR(40),ContactName VARCHAR(40))
------解决方案--------------------因为以后需要不断的抓取XML数据文件然后导入数据库,所以我考虑的是用SSIS来做,定义一个XSD,然后用变量的形式重复抽取数据。
------解决方案--------------------不能正常读取得问题已经解决了,是因为Webservice输出的文件缺少根节点,添加后就可以了。
有没有XML高手知道怎么通过XSLT文件增加一个根节点?谢谢。
------解决方案--------------------参考下面的资料
http://hi.baidu.com/moniteryao/item/ce73e988ecbf3fc799255f7f