如何从SSIS包中的路径中提取文件名?

时间:2013-02-14 17:15:52

标签: ssis

我想知道如何使用以下给定路径中的SSIS提取文件名:

路径:

O:\SourceFiles\Primary\care\ALC121.csv
O:\SourceFiles\Primary\care\COPL119.csv

我想将名称和完整路径插入到表中,如下所示:

表数据:

QueryName  FileName 
---------  ---------------------------------------
ALC121     O:\SourceFiles\Primary\care\ALC121.csv
COPL119    O:\SourceFiles\Primary\care\COPL119.csv

3 个答案:

答案 0 :(得分:4)

我假设完整的文件名来自ForEach Enumerator for files。似乎请求是将该字符串减少到只是基本文件名。有些人会使用表达式来帮助你,但我发现这是一种丑陋的方法。相反,我会使用脚本任务并利用.NET库中的功能。

System.IO.Path.GetFileNameWithoutExtension

  

返回没有指定路径字符串的文件名   扩展

创建第二个变量,使用String类型将其称为QueryName,并将其设置为脚本中的读/写变量。根据具有FileName值的metchod调用的结果来分配它的值。

然后使用执行SQL任务将它们插入到表中。使用?作为参数。

答案 1 :(得分:0)

没有扩展名的文件名:

select substring(?,len(?)+1,(charindex('.',?)-1)-LEN(?))

用于4参数映射
0 - FullPath
1 - FilePath
2 - FullPath
3 - FilePath

答案 2 :(得分:0)

在派生列中,您可以使用TOKEN()TOKENCOUNT()函数来做到这一点:

TOKEN(
     TOKEN(@[User::Filepath],"\\", TOKENCOUNT(@[User::Filepath],"\\"))
, ".", 1)