使用SSIS C#Script

时间:2018-04-11 17:45:00

标签: c# ssis dts

我的问题很简单,但我从中得到的头痛非常严重。在SSIS包中,如何将运行时的System.Object包变量转换为带有C#脚本的字符串列表,以便我可以从此列表中选择Max值并将其分配回另一个包变量。

(详细:) 在SSIS中,我有一个前面的Cozy Roc任务,它从远程SFTP目录中获取文件名列表并将其保存到本地(包)变量" FilesNamesList" System.Object类型。我想用C#脚本任务做的是将这个对象变量解析成一个列表,然后我可以选择Max Value / File Name并将其分配给另一个包变量" LastFileName"类型字符串。然后我将使用第二个变量仅通过SFTP下载具有此名称的文件。这是非工作代码。

    String myString;
    List<String> myList;
    var myVariable = Dts.Variables["User::FileNamesList"];
    myList = myVariable as List<String>; //Main Challenge
    myString = myList.Max();
    Dts.Variables.["User::LastFileName"] = myString;

我正在尝试的第二个选项是提取到一个表对象,但我仍然在尝试填充表时出错:

    OleDbDataAdapter A = new OleDbDataAdapter();
    DataTable dt = new DataTable();
    A.Fill(dt, Dts.Variables["User::pkg_FileList"].Value); //Error
    List<string> myValues = new List<string>();

1 个答案:

答案 0 :(得分:0)

在SSIS中,您必须将变量捕获到对象变量中,然后转换为列表,如下所示:

Object ObjFileNamesList= Dts.Variables["User::FileNamesList"].Value;
List<string> lstFileNamesList = (List<string>)ObjFileNamesList;

// then do your list logic here