SSIS:从文件夹导入 MAX(文件名)
SSIS: import MAX(filename) from folder
我需要从 \\Share\Folder\
中选择一个最大文件名的 .csv
文件以进一步导入到 SQL。文件名是字母数字,例如ABC_DE_FGHIJKL_MNO_PQRST_U-1234567.csv
,其中数字部分会有所不同,但每次运行程序包时我只需要最大一个。
约束:在 SQL 服务器上没有写入权限,我使用 ##Temp table 进行导入,这是文件名处理最不可取的方法(此服务器上的每个循环都没有) .
理想情况下,它将是 function/expr-based 变量(如果需要,结合脚本任务)传递到连接管理器。非常感谢任何想法。
使用脚本任务
- 添加一个字符串类型的变量User::CsvFile
- 将脚本任务添加到您的项目并将您创建的变量添加为 ReadWriteVariable
- 在您的脚本任务中编写以下代码(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
- 然后使用平面文件源中的这个变量
我需要从 \\Share\Folder\
中选择一个最大文件名的 .csv
文件以进一步导入到 SQL。文件名是字母数字,例如ABC_DE_FGHIJKL_MNO_PQRST_U-1234567.csv
,其中数字部分会有所不同,但每次运行程序包时我只需要最大一个。
约束:在 SQL 服务器上没有写入权限,我使用 ##Temp table 进行导入,这是文件名处理最不可取的方法(此服务器上的每个循环都没有) .
理想情况下,它将是 function/expr-based 变量(如果需要,结合脚本任务)传递到连接管理器。非常感谢任何想法。
使用脚本任务
- 添加一个字符串类型的变量User::CsvFile
- 将脚本任务添加到您的项目并将您创建的变量添加为 ReadWriteVariable
- 在您的脚本任务中编写以下代码(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
- 然后使用平面文件源中的这个变量