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

如何在SSIS中读取带日期时间戳的当日文件并写入SQL Server表

解决SSIS读取带当日日期+动态时间戳文件的方法

方法一:使用Foreach循环容器(推荐,低代码)

这种方式无需复杂脚本,适配绝大多数常规场景:

  1. 调整变量配置

    • 保留你已有的DateVar(格式yyyyMMdd),新增以下变量:
      • InputFilePath:存储文件所在文件夹的完整路径(例如D:\DataFiles\)
      • FilePattern:通过表达式生成文件匹配规则,表达式设置为:@[User::myFile] + "_" + @[User::DateVar] + "*.txt"
      • CurrentFileName:用于暂存循环到的单个文件名,数据类型设为字符串
  2. 配置Foreach循环容器

    • 拖入Foreach循环容器,双击打开编辑器
    • 在集合选项卡,选择「Foreach File Enumerator」
    • 「文件夹」选择变量@[User::InputFilePath],「文件」选择变量@[User::FilePattern]
    • 按需勾选「遍历子文件夹」(不需要则取消)
  3. 映射文件名到变量

    • 切换到变量映射选项卡,选中User::CurrentFileName,索引设为0(对应枚举到的文件名)
  4. 动态配置平面文件连接

    • 打开平面文件连接管理器的属性面板,设置ConnectionString的表达式为:@[User::InputFilePath] + @[User::CurrentFileName]
  5. 完成数据导入逻辑

    • 在Foreach循环容器内拖入数据流向任务,用平面文件源(关联上述连接管理器)和OLE DB目标(指向SQL Server目标表)搭建数据流转流程

方法二:脚本任务筛选文件(高灵活度)

如果需要更精细的筛选规则(比如排除特定时间段的文件),可以用脚本任务实现:

  1. 设置变量

    • 保留DateVar、InputFilePath,新增FileList(数据类型设为Object,用于存储筛选后的文件路径列表)
  2. 编写脚本任务代码

    • 在脚本任务的「ReadOnlyVariables」中选择User::InputFilePath、User::DateVar,「ReadWriteVariables」选择User::FileList
    • 示例C#代码:
      using System.IO;
      using System.Collections.Generic;
      
      public void Main()
      {
          string folderPath = Dts.Variables["User::InputFilePath"].Value.ToString();
          string targetPrefix = "myFile_" + Dts.Variables["User::DateVar"].Value.ToString();
          List<string> validFiles = new List<string>();
      
          foreach (string fullPath in Directory.GetFiles(folderPath, "myFile_*.txt"))
          {
              string fileName = Path.GetFileName(fullPath);
              if (fileName.StartsWith(targetPrefix))
              {
                  validFiles.Add(fullPath);
              }
          }
      
          Dts.Variables["User::FileList"].Value = validFiles;
          Dts.TaskResult = (int)ScriptResults.Success;
      }
      
  3. 结合Foreach循环批量处理

    • 拖入Foreach循环容器,集合类型选择「Foreach From Variable Enumerator」,关联变量User::FileList
    • 后续步骤同方法一,映射文件名变量、配置平面文件连接、完成数据导入

注意事项

  • 若需使用SQL Server所在服务器的日期而非包运行机器的本地时间,可将DateVar的赋值逻辑改为从数据库获取(比如执行SELECT CONVERT(varchar(8), GETDATE(), 112))
  • 确保平面文件连接管理器的格式设置(分隔符、编码、列数等)与目标文件完全匹配
  • 可在Foreach循环前添加判断逻辑,检查是否存在符合条件的文件,避免空循环消耗资源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:04:55