Sql 如何将不同名称和相同模式的Excel文件导入数据库?

Sql 如何将不同名称和相同模式的Excel文件导入数据库?,sql,excel,ssis,Sql,Excel,Ssis,如何从每次具有不同文件名的excel源文件(示例excel文件名:abc123、123abc、ab123c等)将数据导入SSIS中的sql server表中实现这一点的一种可能方法是在控制流选项卡中使用ForEach循环容器,然后在控制流任务中放置数据流任务。我已经在下面的例子中解释了这个过程。此示例使用SQL Server后端作为目标,使用Excel 97-2003format.xls作为源文件。请注意,Excel文件的格式应相同 逐步存储过程: 创建一个名为dbo.Location的表,如屏

如何从每次具有不同文件名的excel源文件(示例excel文件名:abc123、123abc、ab123c等)将数据导入SSIS中的sql server表中实现这一点的一种可能方法是在
控制流
选项卡中使用
ForEach循环容器
,然后在控制流任务中放置
数据流任务
。我已经在下面的例子中解释了这个过程。此示例使用
SQL Server
后端作为目标,使用
Excel 97-2003
format
.xls
作为源文件。请注意,Excel文件的格式应相同

逐步存储过程:

  • 创建一个名为
    dbo.Location
    的表,如屏幕截图1所示。本例将通过读取具有相同布局的三个不同Excel文件来填充此表。屏幕截图显示执行包之前的空表

  • 在路径
    c:\temp\
    中创建两个Excel文件,如屏幕截图#2-#4所示。请注意,两个Excel文件的布局相同,但内容不同

  • 在SSIS包上,创建三个变量,如屏幕截图#5所示。变量
    FolderPath
    将包含Excel文件所在的路径
    FileExtension
    将包含Excel文件扩展名(在本例中为*.xls),并且
    FilePath
    应配置为指向一个有效的Excel文件(仅在Excel连接管理器的初始配置期间需要)

  • 在连接管理器中创建一个指向一个有效Excel文件的连接,如屏幕截图6所示

  • 在连接管理器中创建指向SQL Server的OLE DB连接

  • 在SSIS包上,将ForEach循环容器和数据流任务放置在ForEach循环容器中,如屏幕截图#7所示

  • 配置ForEach循环容器,如屏幕截图#8和#9所示。这样,变量
    User::FilePath
    将在
    集合
    部分配置的变量
    FolderPath
    FileExtension
    的帮助下,包含文件夹
    c:\temp\
    中的完整路径Excel文件

  • 在数据流任务内部,放置一个
    Excel源文件
    读取Excel文件数据,并放置一个O
    LE DB destination
    将数据插入SQL Server表dbo.Location。数据流任务应如屏幕截图#10所示

  • 如屏幕截图#11和#12所示,配置Excel源以使用Excel连接读取数据

  • 如屏幕截图#13和#14所示,配置OLE DB目标以将数据插入SQL Server数据库表

  • 在连接管理器中的Excel连接上,配置表达式
    ExcelFilePath
    ServerName
    ,如屏幕截图所示

  • 数据流任务的示例执行如屏幕截图16所示

  • 屏幕截图#17显示包执行后表dbo.Location中的数据。请注意,它包含屏幕截图#3和#4中显示的Excel文件中的所有行

  • 数据流任务
    属性上,将
    DelayValidation
    设置为True,以便SSI在打开包时不会抛出错误

  • 希望有帮助

    屏幕截图#1:

    截图#2:

    屏幕截图#3:

    屏幕截图#4:

    屏幕截图#5:

    屏幕截图#6:

    截图#7:

    截图#8:

    截图#9:

    截图#10:

    截图#11:

    截图#12:

    截图#13:

    屏幕截图#14:

    截图#15:

    截图#16:

    截图#17:

    截图#18:


    对于处理.csv文件的相同过程,“平面文件连接管理器”上应使用哪些表达式?我说的是截图#15,但带有.csv文件。对于使用平面文件连接管理器的csv文件,表达式是不同的。这很有帮助。您是否可以演示如何导入不同的XML文件?XML源似乎没有表达式编辑器?!谢谢你对社区的帮助和工作。精彩的解释!ExcellentHow我可以用你的答案回答我的问题吗:(每次我改变表达时都会出错)为什么这个答案没有被接受为答案?