C# SSIS-FTP组件的动态文件名

C# SSIS-FTP组件的动态文件名,c#,ftp,ssis,C#,Ftp,Ssis,我试图在SSIS中创建一个数据流,以帮助我通过FTP上传文件,但我遇到了一点麻烦。文件名需要是动态的,格式为filename_mmddyy.xls。因此,它每天都会应用日期并上传一个新文件 我能够使用以下表达式将文件正确保存在数据流中: @[User::path]+ Right("0"+(DT_STR,4,1252)DatePart("m",getdate()),2)+ Right("0"+(DT_STR,4,1252)DatePart("d",getdate()),2)+ Right("0"

我试图在SSIS中创建一个数据流,以帮助我通过FTP上传文件,但我遇到了一点麻烦。文件名需要是动态的,格式为filename_mmddyy.xls。因此,它每天都会应用日期并上传一个新文件

我能够使用以下表达式将文件正确保存在数据流中:

@[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:\pathnmydrive”。SSIS然后查找具有该名称的变量,即C:\pathnmydrive,以查找该文件。这是一个小小的计数器intuivite,但现在我知道我可以避免这个陷阱。

为了更改脚本组件中的变量值,需要首先将变量作为ReadWrite传递:

然后,要为变量设置新值,请执行以下操作:

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

要更改脚本组件内的变量值,首先需要将变量作为ReadWrite传递:

然后,要为变量设置新值,请执行以下操作:

Dts.Variables["folders"].Value = "value you want to assign";
  • 创建一个新变量,例如FilePath。使用字符串作为数据类型,并在变量的属性中,将
    evaluatesExpression
    设置为true
  • 配置变量的表达式:
    @[User::path]+“filename_uu”+Right(“0”+(DT_STR,21252)DatePart(“m”,getdate()),2)+Right(“0”+(DT_STR,21252)DatePart(“d”,getdate()),2)+Right(“0”+(DT_STR,41252)DatePart(“yy”,getdate()),2)+.xls”
  • 使用表达式编辑器中的
    计算表达式
    按钮查看表达式是否解析到文件的正确路径
  • 修改
    FTP任务的
    Expressions
    属性,并设置在
    LocalPath
    下创建的变量
  • 创建一个新变量,例如FilePath。使用字符串作为数据类型,并在变量的属性中,将
    evaluatesExpression
    设置为true
  • 配置变量的表达式:
    @[User::path]+“filename_uu”+Right(“0”+(DT_STR,21252)DatePart(“m”,getdate()),2)+Right(“0”+(DT_STR,21252)DatePart(“d”,getdate()),2)+Right(“0”+(DT_STR,41252)DatePart(“yy”,getdate()),2)+.xls”
  • 使用表达式编辑器中的
    计算表达式
    按钮查看表达式是否解析到文件的正确路径
  • 修改
    FTP任务的
    Expressions
    属性,并设置在
    LocalPath
    下创建的变量

  • 创建一个新变量,例如,
    FilePath
    。使用字符串作为数据类型,并在变量的属性中,将
    evaluatesExpression
    设置为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下创建的变量



    我已按上述方式执行,但仍然存在问题
    无法找到变量
    …任何想法

    创建一个新变量,例如
    文件路径
    。使用字符串作为数据类型,并在变量的属性中,将
    evaluatesExpression
    设置为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下创建的变量



    我已经以上述方式执行了,但仍然存在问题
    找不到变量
    …任何想法

    只是回答了如何通过脚本组件正确设置变量。然而,这可能不是你的问题所在。我一直在用FTP组件和动态文件连接器传输文件,并目睹了一些…'SSI的怪癖。如果它不起作用,请告诉我,我很乐意帮助诊断这个问题。我只是回答了一个问题,解释了如何通过脚本组件正确设置变量。然而,这可能不是你的问题所在。我一直在用FTP组件和动态文件连接器传输文件,并目睹了一些…'SSI的怪癖。如果它不起作用,请告诉我,我很乐意帮你诊断这个问题。我昨天想出了一些办法让它工作,但我仍然想尝试改进它,使工作尽可能小。。。现在工作部件太多了。非常感谢。我昨天想出了一些办法让它工作,但我仍然想尝试改进它,使工作尽可能小。。。工作人员太多