我有一个列类型为xml的表。我还有一个目录,可以有0到n个xml文档。对于每个xml文档,我需要在表中插入一个新行并将xml放入xml列。
为了满足客户需求,我需要使用SSIS包执行此操作。我计划使用存储过程插入xml,传入文件路径。
我已经创建了存储过程并进行了测试,它按预期运行。
我的问题是,如何从每个xml文档的SSIS包中执行存储过程是一个特定的目录?
提前感谢您的帮助。 -
答案 0 :(得分:3)
基本上你只需循环遍历文件并获取完整的文件路径传递给存储的proc。这可以使用For Each循环和ForEach文件枚举器轻松完成。这个页面有一个很好的描述如何设置:
http://www.sqlis.com/post/Looping-over-files-with-the-Foreach-Loop.aspx
在循环中,您只需访问每次循环执行时填充的变量(找到XML文件)并将其作为参数发送到执行SQL任务(驻留在For Eacu循环容器内)以调用您的存储过程。以下是将变量作为参数传递的示例:
答案 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/
使用OleDB目的地写入表格。