[英]SSIS - File System task cannot find file path after using script task to assign variable
在我当前的项目中,我必须获取一个已知目录但名称未知的excel文件,将其放入数据库表中,然后移动并重命名所使用的excel文件。
因为这是我的第一个项目,所以我已经使用了一些教程和stackoverflow页面,因此为什么每个循环的控制流都位于a中(即使可能不需要),但这里是控制流:
http://i.stack.imgur.com/Nepgg.png
这是我的脚本任务,用于查找excel文件并分配变量:
public void Main()
{
string directoryLocation = @"I:\All\L3VA Import\"; //Change this for new directory
int directoryLength = directoryLocation.Length;
string[] filePath = Directory.GetFiles(directoryLocation, "*.xls*");
int filePathLength = filePath[0].Length;
Dts.Variables["myConnectionString"].Value = filePath[0];
Dts.Variables["myFileName"].Value = filePath[0].Substring(directoryLength, filePathLength - directoryLength);
然后,我使用“数据流”任务将电子表格数据泵入OLE DB,OLE DB不能单独工作,但是如果首先执行脚本任务就可以工作,这使我相信它可以正确分配变量。
当我然后尝试使用“文件系统任务”移动并重命名此文件时,出现了我的问题,似乎找不到这些变量的值并遇到错误:
错误:文件系统任务上的错误:0xC002F304,文件系统任务:>以下错误消息发生了错误:“找不到路径的一部分。”。
任务失败:文件系统任务
这是使用的变量列表和文件系统任务: http : //i.stack.imgur.com/p6FWD.png
在我看来,如果存在多个文件,您将如何决定哪个Excel文件最合适。 您是否需要遍历其中的多个? 无论如何,如果您使用Foreach Loop Container
并将其设置为搜索目录,就像您的脚本一样,则不需要脚本任务。 因此,您可以执行以下操作:
Foreach Loop Container
并配置以搜索目录并将映射变量映射到您刚刚设置的内容 data flow
Excel Connection
设置data flow
后,在Connection Manager
上设置一个expression
,以使用File Path Variable
作为connection string
请注意,因为您可能需要动态构建目标路径,所以您可能需要更多的变量以更轻松的方式完成任务。
foreeach loop
文件名和扩展名
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.