【问题标题】:LOGIC to retrieve the folder name from the file path in ssisLOGIC 从 ssis 中的文件路径中检索文件夹名称
【发布时间】:2019-05-10 09:08:59
【问题描述】:

我在开发用于自动将 Excel 文件中的数据加载到数据库表中的新包时遇到了问题。在加载时,我需要提取 Excel 文件所在的文件夹名称,根据文件夹的名称,我必须检索一些其他要加载到数据库中的信息。我需要 LOGIC 帮助以从文件路径中检索文件夹名称。

【问题讨论】:

  • 你搜索过ssis get folder name吗?
  • 使用表达式,您可以为您的表达式找到系统函数,如 findstring、substring、len... 使用这些函数进行计算以查找最后一个 '\' 之前的 1 和最后一个 '\' 之间的数据.就是这样,你有你的文件夹名称

标签: sql-server ssis


【解决方案1】:

您可以使用脚本任务,该任务允许您使用 System.IO 命名空间从文件中获取文件信息和目录信息。然后,您可以将尝试从文件夹信息中提取的值分配给变量以供后续步骤使用。

【讨论】:

  • 我已经在脚本任务中做到了,但是每次循环运行它只返回第一个文件的路径然后退出循环,我需要再次运行循环才能返回文件路径文件夹中的其他文件也是如此。
  • 如果所有文件都在同一个文件夹中,我不明白这个问题。你可以再详细一点吗?是否有多个文件夹或子文件夹?您是否尝试获取文件名和文件夹名?
  • 文件夹有多个,需要动态提取文件夹名
【解决方案2】:

执行此操作的一种方法是使用表达式任务。

要使用这种方法,您需要将 Excel 文件的完整路径/名称字符串放入一个变量(以下示例中的“FullPath”)。

@[User::Folder] = SUBSTRING(@[User::Path], 1, 
  LEN(@[User::Path]) - FINDSTRING(REVERSE(@[User::Path]), "\\", 1)
)

此表达式将变量“Folder”设置为“FullPath”减去最后一个“\”及其后面的任何内容的值。如果你喂它C:\Somewhere\Somewhere Else\More Path\File Name.xlsx,表达式会将“文件夹”设置为C:\Somewhere\Somewhere Else\More Path

【讨论】:

    【解决方案3】:

    试试下面的表达式:

    SUBSTRING(@[User::FilePath], 1, 
    LEN(@[User::FilePath]) - FINDSTRING(REVERSE(@[User::FilePath] ), "\\" ,1 ) + 1
    )
    

    更多例子here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-25
      • 1970-01-01
      • 2015-06-03
      • 1970-01-01
      • 1970-01-01
      • 2011-04-13
      • 2016-09-30
      相关资源
      最近更新 更多