【问题标题】:How to import Excel files with different names and same schema into database?如何将具有不同名称和相同架构的 Excel 文件导入数据库?
【发布时间】:2011-05-31 16:23:59
【问题描述】:

如何从每次具有不同文件名的excel源文件将数据导入SSIS中的sql server表(示例excel文件名:abc123、123abc、ab123c等)

【问题讨论】:

    标签: sql excel ssis


    【解决方案1】:

    实现此目的的一种可能方法是在Control Flow 选项卡中使用ForEach Loop container,然后在控制流任务中放置Data Flow task。我在下面的例子中解释了这个过程。此示例使用 SQL Server 后端作为目标,Excel 97-2003 格式 .xls 作为源文件。请注意 Excel 文件的格式应相同。

    分步流程:

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

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

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

    4. 连接管理器中创建一个Excel connection,指向一个有效的 Excel 文件,如屏幕截图 #6 所示。

    5. 连接管理器中创建一个OLE DB Connection,指向SQL Server。

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

    7. 如屏幕截图 #8 和 #9 所示配置 ForEach 循环容器。通过这样做,变量 User::FilePath 将包含位于文件夹 c:\temp\ 中的完整路径 Excel 文件,并借助 Collection 部分中配置的变量 FolderPathFileExtension

    8. 在数据流任务中,放置 Excel source 以读取 Excel 文件数据,并放置 OLE DB destination 将数据插入 SQL Server 表 dbo.Location。数据流任务应如屏幕截图 #10 所示。

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

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

    11. 在连接管理器的Excel连接上,配置表达式ExcelFilePathServerName,如屏幕截图#15所示。

    12. 数据流任务的示例执行如屏幕截图 #16 所示。

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

    14. Data Flow task 属性上,将DelayValidation 设置为True,以便SSIS 在您打开包时不会抛出错误。

    希望对您有所帮助。

    屏幕截图 #1:

    屏幕截图 #2:

    截图#3:

    屏幕截图 #4:

    屏幕截图 #5:

    屏幕截图 #6:

    截图#7:

    截图#8:

    屏幕截图 #9:

    屏幕截图 #10:

    屏幕截图 #11:

    屏幕截图 #12:

    屏幕截图 #13:

    屏幕截图 #14:

    屏幕截图 #15:

    屏幕截图 #16:

    屏幕截图 #17:

    屏幕截图 #18:

    【讨论】:

    • 应该在“平面文件连接管理器”上使用哪些表达式来处理 .csv 文件的相同进程?我说的是屏幕截图 #15,但带有 .csv 文件。对于使用平面文件连接管理器的 csv 文件,表达式是不同的。
    • 这有帮助。您是否可以展示如何导入不同的 XML 文件? XML 源似乎没有表达式编辑器?!感谢您的帮助以及您对社区所做的工作。
    • 很棒的解释!优秀
    • 如何在这里使用您的答案来回答我的问题:stackoverflow.com/questions/23158021/…(每次更改表达式时都会出错)
    • 为什么这个答案没有被接受为答案?
    猜你喜欢
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 2018-11-29
    • 1970-01-01
    • 2010-12-22
    相关资源
    最近更新 更多