日期:2014-05-17  浏览次数:20629 次

求教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