【问题标题】:Extracting substring from a filename and saving it to a variable in SSIS从文件名中提取子字符串并将其保存到 SSIS 中的变量中
【发布时间】:2018-07-30 16:46:46
【问题描述】:

我无法提取文件名并将其保存到 SSIS 中的变量中。当且仅当它与 VIn 中的正则表达式中的模式匹配时,我才尝试保存文件名的子字符串。

例如:

EIRSRequest_INC9999999.csv //这应该提取INC9999999并将其保存到VIn变量

public void Main()
{
    String source = @"F:\";
    //String destination = @"F:\";
    Regex regex = new Regex(@"EIRSRequest_(?<val>[a-zA-Z0-9]{1,})");
    DirectoryInfo di = new DirectoryInfo(source);
    //FileInfo fi = new FileInfo(di.GetFiles);

    foreach (FileInfo fi in di.GetFiles())
    {
        var match = regex.Match(Path.GetFileNameWithoutExtension(fi.Name));

        if (match.Success)
        {
            //Console.WriteLine(match.Groups["val"].Value);

               Dts.Variables["User::vIn"].Value= match.Groups["val"].Value;
            //Console.WriteLine(ticket);

            //File.Move(source + "\\" + fi.Name, destination + "\\" + fi.Name);
            //Console.WriteLine("This is a new line");

            break;
        }
    }

    Dts.TaskResult = (int)ScriptResults.Success;
}

【问题讨论】:

  • 那么您面临的问题是什么?
  • 它没有将文件名的子字符串保存到变量中
  • val 仅包含正则表达式模式中括号中的项目。所以你只会得到下划线后面的字符。
  • 1.) 什么子串?我看不到您在任何地方都在做子字符串。以及 2.) 哪个变量?
  • 脚本从文件名中提取子字符串当且仅当它匹配指定的正则表达式并且假设将子字符串保存到“VIn”。脚本编译得很好,但它不会将子字符串保存到 VIn 变量

标签: c# ssis


【解决方案1】:

对于要更新的​​ SSIS 脚本任务变量,该变量应设置为“读/写”变量。

将您的变量添加到 ReadWriteVariables 并检查。

你应该也能看到官方docs

用户可以对包进行读/写访问的现有变量的逗号分隔列表。

【讨论】:

  • VIn 初始为空可以吗?
  • 我检查了脚本设置,我有你提到的内容
  • 仔细观察,您的源路径和目标路径看起来是相同的。所以,File.Move 很可能失败了,
  • 我评论了那个...试图看看有什么问题
猜你喜欢
  • 2020-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 2015-05-07
  • 2016-05-09
相关资源
最近更新 更多