2015-04-30 63 views
0

我想使用脚本将日期存档文件task.filename将像abc_x1.csv一样。文件将在每月下一次下一个文件,如abc_x2.csv 需要使用_.csv之后的任何名称存档文件,并在扩展名前加上日期。 iam使用下面的代码,这是行不通的。任何人都可以帮助我这个。使用脚本中的C#代码task.script任务在每个循环容器中使用。在ssis中使用c#在脚本任务中存档文件

public void Main() 
     { String sDateSuffix = DateTime.Now.ToString("yyyyMMddhhmmss"); 

      String ArchiveDir = Dts.Variables["V_ArchiveDir"].Value.ToString();   
      String FileName = Dts.Variables["V_FileName"].Value.ToString()+sDateSuffix; 
       File.Move(Dts.Variables["V_FilePath"].Value.ToString() +FileName, ArchiveDir + FileName); 
      Dts.TaskResult = (int)ScriptResults.Success; 
} 

回答

0

如果我理解正确的话,你想你的sDateSuffix附加到文件名,但.csv扩展名之前。如果是的话,我想你只需要使用Path.GetFileNameWithoutExtension():

String sDateSuffix = DateTime.Now.ToString("yyyyMMddhhmmss"); 
String ArchiveDir = Dts.Variables["V_ArchiveDir"].Value.ToString(); 
String V_FileName = Dts.Variables["V_FileName"].Value.ToString(); 
//Assuming V_FileName = "abc_x1.csv", FileName will be "abc_x120150430080000.csv" 
String FileName = Path.GetFileNameWithoutExtension(V_FileName) + sDateSuffix + Path.GetExtension(V_FileName); 
+0

嗨伯特,我试过了选项,但收到错误消息。 错误:System.Reflection.TargetInvocationException:异常已被调用的目标抛出。 ---> Microsoft.SqlServer.Dts.Runtime.DtsRuntimeException:元素在集合中找不到。当您尝试在程序包执行期间从容器上的集合中检索元素并且该元素不存在时,会发生此错误。 ---> System.Runtime.InteropServices.COMException(0xC0010009): –

+0

该消息表示您的ScriptTask找不到您的SSIS变量之一。当您打开ScriptTask组件时(但在单击“编辑脚本”按钮之前),是否在ReadOnly Variables属性下选择了“V_ArchiveDir”和“V_FileName”变量? –

+0

@ Bert-它在只读变量.file.move(文件名,archivedir +文件名)此代码似乎有问题。请在此帮助 –

相关问题