我想知道如何使用以下给定路径中的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
答案 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)