SSIS:从文件夹导入MAX(文件名)

时间:2018-02-04 23:13:40

标签: sql-server file variables ssis ssis-2012

我需要从.csv中选择一个带有max filename的\\\Share\Folder\文件,以便进一步导入到SQL。文件名是字母数字,例如ABC_DE_FGHIJKL_MNO_PQRST_U-1234567.csv,其中数字部分会有所不同,但每次打包时我只需要最多一个。

约束:在该SQL服务器上没有写访问权限,我使用## Temp表进行导入,这是文件名处理最不理想的方法(此服务器上的每个循环都没有)。

理想情况下,它将基于函数/ expr的变量(如果需要,与脚本任务结合)传递到连接管理器。任何想法都非常赞赏。

1 个答案:

答案 0 :(得分:2)

使用脚本任务

  • 添加String User :: CsvFile
  • 类型的变量
  • 向项目添加脚本任务,并将创建的变量添加为 ReadWriteVariable

enter image description here

  • 在您的脚本任务中编写以下代码(VB.NET)

您必须导入 System.Linq

Public Sub Main()

    Dim strDirectory As String = "C:\New Folder" ' Enter =the directory
    Dim strFile As String = String.Empty

    strFile = IO.Directory.GetFiles(strDirectory, "*.csv", IO.SearchOption.TopDirectoryOnly).OrderBy(Function(x) x.Length).Last


    Dts.Variables.Item("CsvFile").Value = strFile

    Dts.TaskResult = ScriptResults.Success

End Sub
  • 然后使用Flat File Source中的此变量