SSIS For Loop - 等待文件继续

时间:2017-10-20 07:46:39

标签: for-loop ssis

我正在创建一个导入10个不同CSV文件的SSIS包,但每个文件的可用性各不相同 - 所以我想让文件检查循环,直到所有文件都存在然后开始导入过程。

我通过T-SQL脚本检查这个

IF OBJECT_ID('tblFileCheck') IS NOT NULL
      DROP TABLE tbFileCheck;

CREATE TABLE tblFileCheck (
       id int IDENTITY(1,1)
      ,subdirectory nvarchar(512)
      ,depth int
      ,isfile bit);

INSERT tblFileCheck 
EXEC xp_dirtree '\\reports\Reports\CSV', 10, 1

BEGIN
IF EXISTS (
SELECT COUNT(id)
     FROM tblFileCheck
     HAVING count(id) > 9
)
BEGIN
PRINT 'Success - Import Latest File'
END
ELSE 
BEGIN
  RAISERROR ('Looping back to start - insufficient files to run', 16, 1 );  
END
END

但是我无法使循环工作,我创建了一个变量varWaitForData(int32,val = 0),创建了一个带有result set = single row的SQL任务编辑器,并将结果集选项设置为参数。 设置InitExpression @varWaitForData = 0 AND EvalExpression @varWaitForData == 0

但我一直收到错误[Execute SQL Task] Error: An error occurred while assigning a value to variable "varWaitForData": "Exception from HRESULT: 0xC0015005".

1 个答案:

答案 0 :(得分:0)

我会使用不同的方法:

将名为fileCount的变量设置为int

脚本任务:获取文件计数

System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo("\\reports\Reports\CSV");
Dts.Variables["User::fileCount"].Value = dir.GetFiles().Length;

现在设置一个foreach文件枚举器 并对fileCount>的路径施加约束9