无法使用SSIS加载平面文件,文件名为变量

时间:2018-04-13 01:22:13

标签: ssis etl

我正在处理一个文本文件,我正在尝试将其加载到文件名是动态的数据库中。我有一个SQL任务查询数据库的“从”路径。然后我有一个Process任务,它使用PowerShell使用我在上一个任务中获得的文件夹名称中的搜索字符串来查找感兴趣的文件。 Powershell命令的结果存储在变量“source_filename”中。然后我使用TRIM(@User :: source_filename)作为我的平面文件连接管理器的ConnectionString表达式。

但是,当我执行包(在SSDT中)时,数据流任务在平面文件源处失败并出现以下错误(请注意错误末尾的空格):

[Flat_Source [17]]错误:无法打开数据文件“... \ xxx_xxx_201802_20180316.txt”。

这将验证文件名是否在“source_filename”变量中返回正确的文件名,但它失败了。为了测试文件加载任务,我将文件名硬编码为source_filename默认值,我禁用在运行时重新评估source_filename变量的PS命令,然后重新运行包。文件加载得很好,我收到以下进度记录(注意文件名末尾没有空格):

[Flat_Source [17]]信息:文件“... \ xxx_xxx_201802_20180316.txt”的处理已经开始。

我还以一种不会在文件名末尾返回空格的方式编写了我的Powershell命令。我还在Flat File Source ConnectionString表达式中特别使用了TRIM()。当我在防御性编程时,有没有人对SSIS为我的连接字符串添加空格的原因有任何建议,以及如何修复它?

我最初是从一个ForEachLoop容器开始的,但那是问题最初开始的时候。然后我切换到Powershell命令以更精确地控制文件名输出。但是,连接字符串表达式中的TRIM()应解决任何空格问题。

谢谢!

0 个答案:

没有答案
相关问题