You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSIS如何将遍历获取的文件名列表存入Object类型变量

SSIS遍历文件名填充Object类型变量实现方案

不需要额外第三方工具,直接用SSIS自带的脚本任务(Script Task) 就能实现,具体操作流程如下:

前置校验

先确认现有配置符合要求:

  • Foreach Loop Container已选用Foreach File Enumerator,勾选「名称和扩展名」检索选项,变量映射页已正确绑定字符串类型的filename变量接收单轮遍历的文件名
  • 已创建Object数据类型的filenamelist变量,变量作用域覆盖Foreach循环容器及后续取值流程
  • (可选)如果最终要直接使用逗号分隔的字符串结果,可以额外创建一个字符串类型的变量存储最终拼接值

操作步骤

  1. 打开Foreach Loop Container,在容器内部拖入一个脚本任务,放置在循环内业务逻辑的最前端即可。
  2. 双击打开脚本任务编辑器,在脚本配置页:
    • ReadOnlyVariables项勾选已有的User::filename变量
    • ReadWriteVariables项勾选创建好的User::filenamelist变量
    • 选择你熟悉的脚本语言(推荐C#),点击「编辑脚本」进入代码编辑界面
  3. 在脚本的Main方法中写入如下逻辑:核心是首次循环时初始化字符串列表存入Object变量,后续每轮循环将当前遍历到的文件名追加到列表中,再回写到Object变量。
public void Main()
{
    // 读取当前轮次遍历到的文件名,因已配置仅返回名称+扩展名,无需额外截取路径
    string currentFileName = Dts.Variables["User::filename"].Value.ToString();
    List<string> fileNameCollection;

    // 首次循环时Object变量为空,初始化列表
    if (Dts.Variables["User::filenamelist"].Value == null)
    {
        fileNameCollection = new List<string>();
    }
    else
    {
        // 非首次循环直接读取已存的列表
        fileNameCollection = (List<string>)Dts.Variables["User::filenamelist"].Value;
    }

    // 追加当前文件名到列表
    fileNameCollection.Add(currentFileName);
    // 将更新后的列表回写到Object类型变量
    Dts.Variables["User::filenamelist"].Value = fileNameCollection;

    Dts.TaskResult = (int)ScriptResults.Success;
}
  1. 若要得到abc.csv, azd.csv, ...格式的逗号分隔字符串,在Foreach Loop Container外部再加一个脚本任务,读取filenamelist中存储的列表,用string.Join(", ", fileNameCollection)方法拼接成目标格式字符串即可,既可以存回字符串变量供后续流程调用,也可以直接输出验证。

避坑提示:如果不想存列表、想直接在循环里拼接逗号分隔字符串,一定要在首次循环时判断字符串变量是否为空,非空时先加分隔符再追加新文件名,避免出现开头多余逗号、文件名之间无分隔符的格式问题。

内容的提问来源于stack exchange,提问作者gwc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 01:03:35