Sql server SSIS ForEach文件循环-将文件名插入表

Sql server SSIS ForEach文件循环-将文件名插入表,sql-server,ssis,Sql Server,Ssis,我正在构建一个SSIS包(使用VS2017)以从特定文件夹加载一组CSV文件。它使用ForEach文件循环非常有效。数据流任务具有平面文件源和OLE DB目标。我希望能够将文件名保存在同一个表中,以及CSV文件中的数据。我该怎么做 非常感谢您的时间和帮助ForEach文件枚举器可以捕获文件名并将其分配给变量,然后可以将其路由到连接管理器的连接字符串变量以进行动态加载。同样的方法也可用于将文件名写入数据库表 在数据流中,添加派生列转换并添加名为“FileName”(或其他名称)的新列,然后将其值设

我正在构建一个SSIS包(使用VS2017)以从特定文件夹加载一组CSV文件。它使用ForEach文件循环非常有效。数据流任务具有平面文件源和OLE DB目标。我希望能够将文件名保存在同一个表中,以及CSV文件中的数据。我该怎么做


非常感谢您的时间和帮助

ForEach文件枚举器可以捕获文件名并将其分配给变量,然后可以将其路由到连接管理器的连接字符串变量以进行动态加载。同样的方法也可用于将文件名写入数据库表


在数据流中,添加派生列转换并添加名为“FileName”(或其他名称)的新列,然后将其值设置为ForEach文件枚举器为文件名设置的变量值。

如果要加载平面文件的整个文件路径,另一种方法是

  • 右键单击“数据流”选项卡中的平面文件源
  • 单击“显示高级编辑器”
  • 单击“组件属性”
  • 在“自定义属性”下,您将找到“FileNameColumnName”
  • 如果您提供一个名称(例如:FlatFileName),则该名称将显示为包含文件名值的映射中的一个源输出列(带文件名的完整路径)。它可以映射到目标中的任何可用列,也可以使用派生列任务进行修改以仅获取文件名
在我的开发过程中,我主要存储了帮助我更好地跟踪的整个路径

对于遇到此问题的任何人,另一种方法是使用更简单的方法,而不是使用ForEach循环

  • 在连接管理器中单击鼠标右键
  • 点击“新建连接”
  • 选择“Multiplatfile”连接类型并单击添加
  • 在连接管理器编辑器中,插入位置并使用通配符*(例如:\\ABC\XYZ\file.*.txt)拾取该文件夹中的所有平面文件
  • 这会自动循环该文件夹中的所有平面文件

希望这有帮助

这在网上的许多例子中都有体现。请尝试一个并发回一个特定问题。就像这个,很高兴它起到了作用。@Dominic如果它解决了问题,你必须接受这个答案。检查