2012-07-20 48 views
1

动态文件名我试图创建SSIS数据流来帮助我通过FTP上传文件,我有一个有点麻烦。文件的名称需要是动态的,格式为filename_mmddyy.xls。因此,它每天都会应用日期并上传新文件。SSIS - 用于FTP组件

我能够让这个文件会在数据流中正确保存以下表达式:

@[User::path]+ 
Right("0"+(DT_STR,4,1252)DatePart("m",getdate()),2)+ 
Right("0"+(DT_STR,4,1252)DatePart("d",getdate()),2)+ 
Right("0"+(DT_STR,4,1252)DatePart("yyyy",getdate()),2)+ 
".xls" 

的FTP组件,但是,不会将作为localPath一个表达式。我尝试在我的原始数据流中覆盖脚本组件内的User :: path变量,但这似乎也不起作用。

我知道我失去了一些东西每个简单,但我盯着它足够长的时间,它只是没有向我涌来。

谢谢!

编辑

好了,打打闹闹的另一天之后,这里是我想出来的:

我做了我原来的任务来创建我的平面文件。注意,我的供应商实际上需要一个真正的excel xls而不是一个csv,所以我必须建立一个文件连接目的地,然后我需要在我的服务器上创建一个静态文件。

然后我用一个脚本任务(C#)的静态文件复制到文件与动态域名。当然,我必须离开原始文件,因为excel目标需要在那里。

最后,我提出另一种文件的连接和使用上述表达式,因为它的连接字符串。然后我有FTP任务使用文件连接作为文件上传。

我要去尝试和修剪它全部下来一点。我想我可以逃避不使用脚本任务,而是使用文件系统任务来复制和使用文件连接来帮助使用动态路径名。

底线我学到的是:在SSIS中,当它说:“PathIsVariable”,你把在文本字段什么是作为一个变量。因此,如果我放入@ [User :: path],它将解析为“C:\ pathonmydrive”。然后SSIS查找具有该名称的变量,即C:\ pathonmydrive来查找该文件。这有点反直觉,但现在我知道我可以避免这个陷阱。

+0

只是回答了这个问题解释如何正确地通过一个脚本组件设置一个变量。但这可能不是你的问题所在。我一直在四处传送文件用FTP组件和动态文件连接器和目睹了一些......“怪癖”与SSIS。只要让我知道,如果它不工作和虐待很乐意帮助诊断问题 – cfrag 2012-07-20 09:11:46

回答

3
  1. 创建一个新变量,例如FilePath。使用字符串作为数据类型,并在变量的属性中将EvaluateAsExpression设置为true。
  2. 配置变量的表达式:@[User::path] + "filename_" + Right("0"+(DT_STR,2,1252)DatePart("m",getdate()),2) + Right("0"+(DT_STR,2,1252)DatePart("d",getdate()),2)+ Right("0"+(DT_STR,4,1252)DatePart("yy",getdate()),2) + ".xls"
  3. 在表达式编辑器中使用Evaluate Expression按钮来查看表达式是否解析了文件的正确路径。
  4. 修改您FTP taskExpressions属性并设置LocalPath下创建的变量。
+0

感谢一大堆。昨天我想通了什么得到它的工作,但我还是想现在就尝试和改进,使这项工作是尽可能小......太多的工作零件。 – 2012-07-21 13:13:19

1

为了改变一个脚本组件中的变量值,则需要先通过变量读写:

enter image description here

然后,到一个新的值设置为变量:

Dts.Variables["folders"].Value = "value you want to assign"; 
1

创建一个新变量,例如FilePath。使用字符串作为数据类型,并在变量的属性中将EvaluateAsExpression设置为true。 配置变量的表达:

@[User::path] + "filename_" + Right("0"+(DT_STR,2,1252)DatePart("m",getdate()),2) + Right("0"+(DT_STR,2,1252)DatePart("d",getdate()),2)+ Right("0"+(DT_STR,4,1252)DatePart("yy",getdate()),2) + ".xls" 

使用计算表达式按钮表达式编辑器来查看是否表达式解析正确的文件路径。

修改您的FTP任务的Expressions属性,并设置你的localPath下创建的变量。


我上面的方式执行,但我仍然有问题The variable cannot be found ...任何想法