• 如何使用SQL Server Integration Services从多个Excel文件读取数据


    问题

    我有多个Excel文件中的数据,并且我所有的Excel文件都放在同一文件夹中。我想创建一个SQL Server集成服务(SSIS)程序包,该程序包可以从多个Excel文件读取数据并将数据加载到SQL Server目标表中。如何使用SSIS实现此目的?

    本技巧说明了我们如何使用SSIS从多个Excel文件中读取数据并将数据加载到SQL Server目标表中。请按照以下所有步骤了解解决方案。

    步骤1-建立资料夹

    C: Drive 创建一个名为Excel_Exercise的文件夹,然后创建一个名为Excel_Source的子文件夹让我们在Excel_Source文件夹中创建三个excel文件请参考下图作为参考。

     
    Excel源文件夹

    我们将添加这三个Excel文件的数据,然后使用SSIS从所有这些Excel文件中读取数据。

    第2步-示例文件

    在上一步中,我已经创建了三个空的Excel源文件。让我们将数据添加到每个Excel文件的sheet1中,如下所示。

    Excel数据样本

    步骤3-SQL Server目标表

    让我们创建一个目标表,从所有三个Excel文件中读取数据后,我们将在其中加载数据。请使用下面的SQL代码创建表。

    USE [AdventureWorksDW2008R2]
    GO
    CREATE TABLE [dbo].[ImportMultipleExcelFiles](
        [EMPID] [int] NULL,
        [EMPNAME] [nvarchar](255) NULL
    )
    GO

    步骤4-SSIS套件建立

    创建一个程序包并将其命名为ImportMultipleExcelFiles,请参考下图。

    创建SSIS包

    步骤5-SSIS程序包变量

    请创建一个名为FileName的变量,此变量的范围为ImportMultipleExcelFiles,数据类型为String请参考下图。

    创建SSIS变量

    步骤6-SSIS Foreach循环容器

    在控制流任务中添加一个Foreach循环容器,请参考下图。

     
    添加ForEach循环容器

    步骤7-SSIS Foreach循环容器集合

    编辑Foreach循环容器,在“ 收集”部分中将Enumerator更改“ Foreach File Enumerator”请参考下图。

    编辑ForEach循环容器

    我们必须更改Enumerator配置,如下所示。

    • 文件夹:提供完整的文件夹路径位置,所有我们的Excel源文件都存储在该路径中。我们已将所有Excel文件存储在C: Excel_Exercise Excel_Source中。
    • 文件:我们需要从源文件夹中读取Excel文件,因此请在“文件”部分中输入 * .xls,这将确保我们的SSIS包将从源文件夹中读取所有可用的.xls文件。此处*表示Excel文件名可以是任何名称,但文件扩展名为.xls如果我们需要从特定的Excel文件名中读取数据,则必须进行相应的配置。
    • 检索文件名:请选择完全合格单选按钮。请参考下图作为参考。
    枚举器配置

    要为Foreach循环容器创建变量映射,请选择“ User :: FileName”变量,然后在“变量映射”部分中将Index值设置为0。请参考下图。

    ForEach循环容器变量映射

    步骤8-SSIS数据流任务

    Foreach循环容器内添加数据流任务,请参考下图。

    在SSIS中添加数据流任务

    右键单击最近添加的数据流任务,然后单击属性,请参考下图。

    数据流任务属性

    请将DelayValidation属性标记True,请参考下图。

     
    数据流任务延迟验证

    步骤9-数据流任务中的Excel源

    在数据流任务中添加Excel源,并创建与任何Excel源文件的新连接。

    Excel来源协助

    就我而言,我使用的是First_Excel_Souce.xls,请参考下图。

    Excel源文件夹路径

    打开Excel Source Connection并确保其配置如下所示。

    Excel源代码编辑器

    步骤10-数据流任务中的OLEDB目标

    在数据流任务中添加OLE DB目标任务,并创建到目标数据库的连接。选择目标表(ImportMultipleExcelFiles),然后将可用的输入源列映射到可用的目标列。请参考下图。

    添加OLEDB目标任务

    添加OLE DB目标任务后,您的数据流任务应如下图所示。

    数据流任务的源和目标

    步骤11-配置动态Excel源连接

    到目前为止,我们的Excel源连接已固定到一个名为First_Excel_Source.xls的文件我们必须使Excel连接动态化,以便它可以连接到源文件夹中的每个Excel文件。要使Excel源连接动态化,请右键单击Excel Source Connection,然后单击“属性”。您可以参考下图。

    Excel连接属性

    请展开表达式属性,然后选择“连接字符串”属性,然后单击表达式图标。请参考下图。

    连接属性表达式

    请复制以下代码并将其粘贴到表达式窗口中。

    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    +@[User::FileName]+";Extended Properties="Excel 8.0;HDR=YES";"

    单击“评估表达式”按钮以确保它不会引发错误,然后单击“确定”按钮。请参考下图。

    连接字符串表达式

    步骤12-执行SSIS程序包

    让我们执行SSIS包,如您从SSIS包下面的图像中成功执行所见。

    执行SSIS包

    第13步-审核最终数据

    让我们预览目标表中的数据。从下图可以看到,所有三个Excel文件的数据都是根据我们的要求加载的。

    数据预览目标表
  • 相关阅读:
    CF161D Distance in Tree
    [WC2010]重建计划 长链剖分
    [FJOI2014]最短路径树问题 长链剖分
    [Vani有约会]雨天的尾巴 线段树合并
    Friend Links
    Nerdtree+高亮+图标配置
    【CF1416C】XOR Inverse
    01-Trie 学习
    【[USACO19DEC】Milk Visits G
    【ARC069D】Flags
  • 原文地址:https://www.cnblogs.com/Javi/p/13494494.html
Copyright © 2020-2023  润新知