如何获取变量';ssis中脚本任务的s值

如何获取变量';ssis中脚本任务的s值,ssis,script-task,Ssis,Script Task,我在SSIS中的一个脚本任务中有以下代码: public void Main() { string filename; filename = Dts.Variables["User::FileName"].Value.ToString(); string getEmployerId = filename.Split('_')[0]; int employerId = Int32.Parse(Reg

我在SSIS中的一个脚本任务中有以下代码:

       public void Main()
        {
           string filename;


        filename = Dts.Variables["User::FileName"].Value.ToString();

         string getEmployerId = filename.Split('_')[0];

   int employerId = Int32.Parse(Regex.Match(getEmployerId, 
        @"\d+").Value);
          int fail = 1; 
我需要从此代码中获取
employerId
值,并将其作为变量存储在SSIS包中


有人知道最好的方法是什么吗

据我所知,您正在从文件名中检索EmployerId,对吗?如果是,则不需要使用脚本任务。只需创建一个新变量并设置一个表达式来解析EmployerId。如果您可以提供文件名,我可以帮助您使用表达式

更新

基于可变字符长度以及无法更改文件名以包含另一个分隔符,您需要在脚本任务中使用regex来处理此问题。请参阅下面的Web链接:

在控制流中:

  • 创建由for each循环枚举器设置的字符串类型的文件名变量
  • 创建int32类型的EmployerID变量
  • 在脚本任务中:

  • 将文件名选择为只读,将EmployerID选择为读写
  • 获取文件名值
  • 使用正则表达式获取EmployeID
  • 设置EmployerID变量

  • 我有几个文件,例如“Dem323_04265.45.23.4”,Pay661_a454”,。在第一个示例中,employerId为323,在第二个示例中,employerId为661。employerId通常位于“\ux”之前。根据您提供的正则表达式,employerId始终是十进制的,对吗?最小值和最大值是多少?此外,EmployerId之前的数据的最小值和最大值是多少(例如,“DEM”、“PAY”)?EmployerId之前的数据的最小值可以是两个字母,最大值应该是五个字母,EmployerId不应该是小数。可变的字符长度将使表达式令人讨厌。在我们放弃表达式之前,你能在EmployerID之前的数据之间添加一个“u”吗?不,我在这个文件夹中有1000多个文件,我每天都会收到新文件,所以我不能更改所有文件的文件名。还有其他的可能性吗?我想做一个表达式,但它似乎太复杂了