重命名文件源



我一直在从平面文件源开发SSIS软件包。该文件每天都有,文件名具有这样的日期指示:

filename_20190509042908.txt

我想知道如何直到日期部分。我希望包裹能动态读取文件,但是它应该通过最后6位数字的传递,因为它不一致,因为它不一致。

我想通过filename_20190509.txt

我已经弄清楚了如何将文件名获取直到删除时间部分的日期。因此,我很难通过在文件扩展程序之前忽略最后6位数字来动态读取文件名。

有人可以帮我吗?

从完整文件路径删除时间部分

假设完整的文件路径存储在名为 @[User::FilePath]

的变量中

您必须在数据流任务添加Expression Task 之前添加类型字符串的变量(示例:@[User::Filename](,并使用以下表达式:

@[User::Filename] = SUBSTRING(@[User::FilePath], 1, LEN(@[User::FilePath]) - 
FINDSTRING(REVERSE(@[User::FilePath]), "\", 1)) + "\" + 
LEFT(TOKEN(@[User::FilePath],"\",TOKENCOUNT(@[User::FilePath],"\")),
LEN(TOKEN(@[User::FilePath],"\",TOKENCOUNT(@[User::FilePath],"\"))) - 10) + ".txt"

示例:

如果@[User::FilePath]的值是

c: new文件夹 1 filename_20190503001221.txt

然后@[User::Filename]将是:

c: new文件夹 1 filename_20190503.txt


如果您只有文件名为

filename_20190503001221.txt

,文件夹路径存储在另一个变量中,只需使用以下表达式:

@[User::Filename] = @[User::Folderpath] + "\" + 
LEFT(TOKEN(@[User::FilePath],"\",TOKENCOUNT(@[User::FilePath],"\")),
LEN(TOKEN(@[User::FilePath],"\",TOKENCOUNT(@[User::FilePath],"\"))) - 10) + ".txt"

从变量读取文件源

单击用于读取源文件的平面文件连接管理器,按 f4 显示属性选项卡,单击表达式属性,然后将以下表达式分配给connectionstring属性:

@[User::Filename]

现在将数据流任务更改为 Delay validation属性值为 True

  • SQL Server Integration Services中的动态平面文件连接

我必须假设您正在使用foreach循环,因为文件名正在更改,但这是如何将完全合格的名称更改为您想要的内容:

TOKEN(character_expression, delimiter_string, occurrence)

您的用法:

这将为您提供完整的文件名:

exp = TOKEN(@filename,"",LEN(@filename)-LEN(replace(@filename,"",""))

然后从那里您需要使用左Plus添加.txt

left(exp,LEN(exp)-10) + ".txt"

相关内容

  • 没有找到相关文章

最新更新