在不知道文件名的情况下使用 SSIS 从 Excel 导入数据
Import data from Excel using SSIS without knowing the file name
我正在开发一个 SSIS 包,它将用于将数据从 Excel 文件导入到 SQL 服务器。我目前的努力是弄清楚如何在事先不知道文件名称的情况下使 SSIS 包恰好引入一个 excel 文件。我有一个目录将同时包含 0
和 n
excel 个文件。我只想拉入创建时间最早的文件。这可能吗?
我正在使用 Visual Studio 2015 构建 SSIS 包。我的数据库在 SQL Server 2016 中。
创建动态文件连接:
创建一个数据类型为字符串的新变量(名称示例:'SourceFile')。
在 'For Each Loop Container' 中将该变量映射到 'Variable Mapping' 选项卡下,并将 'Enumerator Configuration' 设置为正确的文件夹和文件扩展名。
'For Each Loop Container'将从该位置读取文件并将文件的名称分配给变量。
在文件连接的表达式属性中,将 ConnectionString 属性 设置为 @[User::SourceFile]
这应该使您的文件源动态化。无论文件的名称是什么,它都会选取文件,但文件的格式必须保持一致。
仅使用 SSIS 任务,我不知道如何利用文件的创建日期来选择最旧的文件,但是如果文件名包含文件的创建日期,您可以将日期从 @ 中提取出来[User::SourceFile] 变量并将其存储在另一个变量中,每次执行 'For Each Loop Container' 以确定哪个文件最旧。
我正在开发一个 SSIS 包,它将用于将数据从 Excel 文件导入到 SQL 服务器。我目前的努力是弄清楚如何在事先不知道文件名称的情况下使 SSIS 包恰好引入一个 excel 文件。我有一个目录将同时包含 0
和 n
excel 个文件。我只想拉入创建时间最早的文件。这可能吗?
我正在使用 Visual Studio 2015 构建 SSIS 包。我的数据库在 SQL Server 2016 中。
创建动态文件连接:
创建一个数据类型为字符串的新变量(名称示例:'SourceFile')。
在 'For Each Loop Container' 中将该变量映射到 'Variable Mapping' 选项卡下,并将 'Enumerator Configuration' 设置为正确的文件夹和文件扩展名。 'For Each Loop Container'将从该位置读取文件并将文件的名称分配给变量。
在文件连接的表达式属性中,将 ConnectionString 属性 设置为 @[User::SourceFile]
这应该使您的文件源动态化。无论文件的名称是什么,它都会选取文件,但文件的格式必须保持一致。
仅使用 SSIS 任务,我不知道如何利用文件的创建日期来选择最旧的文件,但是如果文件名包含文件的创建日期,您可以将日期从 @ 中提取出来[User::SourceFile] 变量并将其存储在另一个变量中,每次执行 'For Each Loop Container' 以确定哪个文件最旧。