问题
我有多个Excel文件中的数据,并且我所有的Excel文件都放在同一文件夹中。我想创建一个SQL Server集成服务(SSIS)程序包,该程序包可以从多个Excel文件读取数据并将数据加载到SQL Server目标表中。如何使用SSIS实现此目的?
解
本技巧说明了我们如何使用SSIS从多个Excel文件中读取数据并将数据加载到SQL Server目标表中。请按照以下所有步骤了解解决方案。
步骤1-建立资料夹
请在C: Drive 上创建一个名为Excel_Exercise的文件夹,然后创建一个名为Excel_Source的子文件夹。让我们在Excel_Source文件夹中创建三个excel文件。请参考下图作为参考。
我们将添加这三个Excel文件的数据,然后使用SSIS从所有这些Excel文件中读取数据。
第2步-示例文件
在上一步中,我已经创建了三个空的Excel源文件。让我们将数据添加到每个Excel文件的sheet1中,如下所示。
步骤3-SQL Server目标表
让我们创建一个目标表,从所有三个Excel文件中读取数据后,我们将在其中加载数据。请使用下面的SQL代码创建表。
USE [AdventureWorksDW2008R2] GO CREATE TABLE [dbo].[ImportMultipleExcelFiles]( [EMPID] [int] NULL, [EMPNAME] [nvarchar](255) NULL ) GO
步骤4-SSIS套件建立
创建一个程序包并将其命名为ImportMultipleExcelFiles,请参考下图。
步骤5-SSIS程序包变量
请创建一个名为FileName的变量,此变量的范围为ImportMultipleExcelFiles,数据类型为String。请参考下图。
步骤6-SSIS Foreach循环容器
在控制流任务中添加一个Foreach循环容器,请参考下图。
步骤7-SSIS Foreach循环容器集合
编辑Foreach循环容器,在“ 收集”部分中将Enumerator值更改为“ Foreach File Enumerator”。请参考下图。
我们必须更改Enumerator配置,如下所示。
- 文件夹:提供完整的文件夹路径位置,所有我们的Excel源文件都存储在该路径中。我们已将所有Excel文件存储在C: Excel_Exercise Excel_Source中。
- 文件:我们需要从源文件夹中读取Excel文件,因此请在“文件”部分中输入 * .xls,这将确保我们的SSIS包将从源文件夹中读取所有可用的.xls文件。此处*表示Excel文件名可以是任何名称,但文件扩展名为.xls。如果我们需要从特定的Excel文件名中读取数据,则必须进行相应的配置。
- 检索文件名:请选择完全合格单选按钮。请参考下图作为参考。
要为Foreach循环容器创建变量映射,请选择“ User :: FileName”变量,然后在“变量映射”部分中将Index值设置为0。请参考下图。
步骤8-SSIS数据流任务
在Foreach循环容器内添加数据流任务,请参考下图。
右键单击最近添加的数据流任务,然后单击属性,请参考下图。
请将DelayValidation属性标记为True,请参考下图。
步骤9-数据流任务中的Excel源
在数据流任务中添加Excel源,并创建与任何Excel源文件的新连接。
就我而言,我使用的是First_Excel_Souce.xls,请参考下图。
打开Excel Source Connection并确保其配置如下所示。
步骤10-数据流任务中的OLEDB目标
在数据流任务中添加OLE DB目标任务,并创建到目标数据库的连接。选择目标表(ImportMultipleExcelFiles),然后将可用的输入源列映射到可用的目标列。请参考下图。
添加OLE DB目标任务后,您的数据流任务应如下图所示。
步骤11-配置动态Excel源连接
到目前为止,我们的Excel源连接已固定到一个名为First_Excel_Source.xls的文件。我们必须使Excel连接动态化,以便它可以连接到源文件夹中的每个Excel文件。要使Excel源连接动态化,请右键单击Excel Source Connection,然后单击“属性”。您可以参考下图。
请展开表达式属性,然后选择“连接字符串”属性,然后单击表达式图标。请参考下图。
请复制以下代码并将其粘贴到表达式窗口中。
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +@[User::FileName]+";Extended Properties="Excel 8.0;HDR=YES";"
单击“评估表达式”按钮以确保它不会引发错误,然后单击“确定”按钮。请参考下图。
步骤12-执行SSIS程序包
让我们执行SSIS包,如您从SSIS包下面的图像中成功执行所见。
第13步-审核最终数据
让我们预览目标表中的数据。从下图可以看到,所有三个Excel文件的数据都是根据我们的要求加载的。