Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
文件夹中所有文件的SSIS行计数_Ssis_Rowcount_Foreach Loop Container - Fatal编程技术网

文件夹中所有文件的SSIS行计数

文件夹中所有文件的SSIS行计数,ssis,rowcount,foreach-loop-container,Ssis,Rowcount,Foreach Loop Container,我有一个文件夹,其中包含每天替换的多个Excel文件。我需要一个总行数,它可以为我提供文件夹中每个单独Excel文件的行数总和(即,如果有3个文件,每个文件有10条记录,我需要30条结果计数)。然后,我需要每天运行这个包,将单个记录添加到日志表中,该日志表将为我提供文件夹中记录的每日计数。我一直在尝试Foreach循环容器和ADO枚举器,但似乎无法找到解决方案 您可以使用行计数组件 在控制流中创建数据流任务。然后,在数据流内部,使用连接到行计数组件的Excel源组件。创建一个整数变量,双击行计数

我有一个文件夹,其中包含每天替换的多个Excel文件。我需要一个总行数,它可以为我提供文件夹中每个单独Excel文件的行数总和(即,如果有3个文件,每个文件有10条记录,我需要30条结果计数)。然后,我需要每天运行这个包,将单个记录添加到日志表中,该日志表将为我提供文件夹中记录的每日计数。我一直在尝试Foreach循环容器和ADO枚举器,但似乎无法找到解决方案

您可以使用行计数组件

在控制流中创建数据流任务。然后,在数据流内部,使用连接到行计数组件的Excel源组件。创建一个整数变量,双击行计数组件并将变量分配给它

如果正确配置了Excel源(使用Excel连接管理器),则所创建的变量将保存要传递的Excel文件中的行数


有一个很好的解决方案,无需使用任何脚本任务即可应用。您只需要使用“Foreach循环容器”、“数据流任务”和“执行SQL任务”

定义变量:

  • V_filepath->(字符串)将保留文件所在的路径
  • V_FileName->(字符串)将用Foreach容器中的文件名填充
  • V_行数(整数)
  • V_文件行数(整数)
  • V_TotalRecords(整数)
定义Foreach:

将源文件映射到行计数组件并选择变量:V\u FileRowCount

在“执行SQL任务”中,将结果集更改为“单行”

将结果集映射到以下变量:

“执行SQL任务”表达式部分中,选择以下属性表达式:

在“表达式”窗格中,发出以下命令:

选择“+(DT_STR,101252)@[User::V_TotalRecords]+“+”+(DT_STR,101252)@[User::V_FileRowCount]+”,1+“+(DT_STR,101252)@[User::V_RowCount]

一旦你完成了上述工作,你就完成了

如果希望看到结果,请添加脚本任务(仅显示结果)

并粘贴以下脚本代码,而不是以“Public Void Main”开头的部分


您可以使用使用互操作查看Excel文件的脚本任务来完成此操作。感谢@TabAlleman的回复。我不熟悉编写任务脚本,以前从未使用过互操作。你能详细说明一下如何使用这个或给我指一个有用的资源吗?不,不幸的是,我手头没有任何东西。我能做的就是把这些关键词交给谷歌。嗨,亚历克斯。除了@TabAlleman的输入,我还建议使用Bing。
        public void Main()
{

    try
    {

        string Variables = "Loop Counter: " + Dts.Variables["User::V_RowCount"].Value.ToString() + "                       Total Records in all files: " + Dts.Variables["User::V_TotalRecords"].Value.ToString();
        MessageBox.Show(Variables).ToString();

    }



    catch (Exception Ex)
    {

        MessageBox.Show(Ex.Message);

    }
}