SSIS 脚本任务获取 csv 文件的行数

SSIS Script Task get row count of csv files

我正在使用 VS 2012\SQL SSIS。如何检索 csv 文件中记录的行数并将它们分配给变量 (RowCount) 以便稍后在流程中使用?我还需要从计数中排除 1,因为这将是 header.

但是,我不能只使用数据流任务、OLE 源然后使用行计数,因为我不知道文件名(或 csv 的标题)。我所知道的是至少会有行 header。到目前为止,我有一个 FOR EACH 循环容器,它查看特定文件夹,然后将文件名分配给变量“FileNameFound”。如何配置脚本任务,然后将 RowCount 分配给变量“RowCount”?

到目前为止,在我的脚本任务 (C#) 中,我尝试了下面的方法来测试消息框

public void main()
{
        string strPath = Dts.Variables["FileNameFound"].Value.ToString();
        string[] strArr = File.ReadAllLines(strPath);
        //MessageBox.Show(strArr[0]);
        MessageBox.Show("Total Records " + strArr.Length.ToString());

        Dts.TaskResult = (int)ScriptResults.Success;
}

如何将计数的记录分配给 SSIS 变量“RowCount”?

如何在脚本任务中为 SSIS 变量赋值?

假设您在脚本任务配置页面中有一个名为@[User::RowCount] 的变量,它有一个地方可以识别变量的只读集合以及变量的Read/Write 集合。将其添加到 ReadWrite 集合。

在您的实际代码中,您会将计算的行数分配给 SSIS 变量的 .Value 属性。

Dts.Variables["RowCount"].Value = strArr.Length -1;