如何使用SSIS包处理XML文件和更新表?

时间:2012-11-07 15:57:47

标签: sql-server ssis

我有两个XML文件accepted.XMLrejected.XML,它们具有相似的结构。这些文件的其中一个节点是 CLIENT_CLAIM_NUM

如果CLIENT_CLAIM_NUM来自accepted.xml,我需要更新一个SQL Server表,其状态为已接受状态。与rejected.xml的情况相同。我接受的.XML具有以下结构:

Accepted.xml文件布局:

 <CLAIM> 
      <CLIENT_CLAIM_NUM>1</CLIENT_CLAIM_NUM> 
      <Vendor_ASSIGNED_CLAIM_NUM>434772</Vendor_ASSIGNED_CLAIM_NUM> 
      <LASTNAME>#########</LASTNAME> 
      <Date>2012-01-06T00:00:00</Date>
 </CLAIM>

另外,如何通过邮件发送每个文件中的索赔号计数?

我使用了数据流任务和XML源来解析XML。它将节点作为列,但如何将它存储在具有这些列的变量或更新表中。我不能使用临时表,因为我想在单个包中使用所有这些

1 个答案:

答案 0 :(得分:0)

要更新表,请将输出数据流路径连接到OLE DB命令转换。构造一个参数化的更新语句,例如

更新MyTable SET Claim_Num =?

然后在Column Mappings选项卡上(在 OLE DB命令转换)。您可以根据需要添加其他参数并将其映射到其他列。

要将值存储在变量中,首先要定义一个Data Type = Object的变量。然后将输出数据流路径连接到Recordset目标,并指定该变量。请注意,这实际上是所有行和列的表。

要获取特定单元格,接下来将Foreach循环容器添加到控制流(现有数据流任务的下游)。将Enumerator设置为Foreach ADO枚举器。将变量指定为ADO对象源变量。然后在“变量映射”选项卡上为输出中的每个列定义新的变量。现在,Foreach循环容器中的任何任务都将获得在循环的每次迭代中分配给每行的值的变量。