用于为每个xml文档执行存储过程的SSIS包是特定目录

时间:2011-07-11 17:16:17

标签: sql sql-server visual-studio-2008 ssis

我有一个列类型为xml的表。我还有一个目录,可以有0到n个xml文档。对于每个xml文档,我需要在表中插入一个新行并将xml放入xml列。

为了满足客户需求,我需要使用SSIS包执行此操作。我计划使用存储过程插入xml,传入文件路径。

我已经创建了存储过程并进行了测试,它按预期运行。

我的问题是,如何从每个xml文档的SSIS包中执行存储过程是一个特定的目录?

提前感谢您的帮助。   -

2 个答案:

答案 0 :(得分:3)

基本上你只需循环遍历文件并获取完整的文件路径传递给存储的proc。这可以使用For Each循环和ForEach文件枚举器轻松完成。这个页面有一个很好的描述如何设置:

http://www.sqlis.com/post/Looping-over-files-with-the-Foreach-Loop.aspx

在循环中,您只需访问每次循环执行时填充的变量(找到XML文件)并将其作为参数发送到执行SQL任务(驻留在For Eacu循环容器内)以调用您的存储过程。以下是将变量作为参数传递的示例:

http://geekswithblogs.net/stun/archive/2009/03/05/mapping-stored-procedure-parameters-in-ssis-ole-db-source-editor.aspx

答案 1 :(得分:0)

您无需为此使用存储过程。您可以在SSIS包中完成所有这些操作。方法如下:

让For-Each循环任务读取文件夹中的所有可用文件。将文件的完整路径放入名为XMLFileName

的变量中

在For-Each循环中,使用数据流任务读取内容。

OLE_SRC正在从同一个SQL Server读取,它的语句是SELECT GetDate() as CurrentDateTime

DerivedColumn组件创建一个名为XMLFilePath的列,其中包含XML文件的完整路径

ImportColumn组件是实现魔力的组件。它将XMLFilePath作为输入列,为其创建一个新输出列的LineageId,它将为您导入完整的XML。详细了解如何在此处进行设置:

http://www.bimonkey.com/2009/09/the-import-column-transformation/

enter image description here

使用OleDB目的地写入表格。