基于变量SSIS脚本删除文件

时间:2016-09-08 16:11:23

标签: c# ssis ssis-2008

我在ssis中有一个删除文件的脚本,我需要通过添加变量来修改脚本,以便可以动态执行进程。如果有人可以通过展示如何在下面的脚本中添加变量来帮助我,我将不胜感激: -

enter public void Main()
    {
        int RetentionPeriod = 0;
        string directoryPath = @"\\ABCD\EFG\HIJ";--need to add location variable
        string[] oldFiles = System.IO.Directory.GetFiles(directoryPath, "*.csv");
        foreach (string currFile in oldFiles)
        {
            FileInfo currFileInfo = new FileInfo(currFile);
            if (currFileInfo.LastWriteTime < (DateTime.Now.AddDays(-RetentionPeriod)))---need to add date variable here
            {
                currFileInfo.Delete();
            }
        }
        // TODO: Add your code here
        Dts.TaskResult = (int)ScriptResults.Success;
    }
}

}

如脚本所示,我需要添加两个变量,即位置变量和Date变量。变量都有字符串数据类型

  

我知道这个问题非常愚蠢,但我没有编写SSIS脚本的exp

2 个答案:

答案 0 :(得分:2)

string directoryPath = Dts.Variables["User::NameOfStringVariable"].Value

您还必须将该变量添加到脚本任务配置的ReadOnly列表中。这是一个来自另一个问题的屏幕截图,显示了脚本可以访问的变量的位置:

enter image description here

如果您不知道在何处/如何将变量添加到包中。一种简单的方法是右键单击控制流的灰色区域并选择变量,这将显示变量窗口,然后只需添加具有所需的相应数据类型的变量。

enter image description here

答案 1 :(得分:0)

此代码已被过度编码:请尝试以下操作: 按照上面的回答设置变量以包含文件路径 在设置System.IO之后将其添加到main中;参考

public void Main()
{
    string FilePath = Dts.Variables["UserControl::File"].Value.ToString();
    if (File.Exists(FilePath))
    {
        File.Delete(FilePath);
    }
    Dts.TaskResult = (int)ScriptResults.Success;
}