我在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
答案 0 :(得分:2)
string directoryPath = Dts.Variables["User::NameOfStringVariable"].Value
您还必须将该变量添加到脚本任务配置的ReadOnly列表中。这是一个来自另一个问题的屏幕截图,显示了脚本可以访问的变量的位置:
如果您不知道在何处/如何将变量添加到包中。一种简单的方法是右键单击控制流的灰色区域并选择变量,这将显示变量窗口,然后只需添加具有所需的相应数据类型的变量。
答案 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;
}