如何将具有不同名称和相同架构的 Excel 文件导入数据库?
Posted
技术标签:
【中文标题】如何将具有不同名称和相同架构的 Excel 文件导入数据库?【英文标题】:How to import Excel files with different names and same schema into database? 【发布时间】:2011-05-31 16:23:59 【问题描述】:如何从每次具有不同文件名的excel源文件将数据导入SSIS中的sql server表(示例excel文件名:abc123、123abc、ab123c等)
【问题讨论】:
【参考方案1】:实现此目的的一种可能方法是在Control Flow
选项卡中使用ForEach Loop container
,然后在控制流任务中放置Data Flow task
。我在下面的例子中解释了这个过程。此示例使用 SQL Server
后端作为目标,Excel 97-2003
格式 .xls
作为源文件。请注意 Excel 文件的格式应相同。
分步流程:
创建一个名为 dbo.Location
的表,如屏幕截图 #1 所示。此示例将通过读取具有相同布局的三个不同 Excel 文件来填充此表。截图显示了包执行前的一个空表。
在路径 c:\temp\
中创建两个 Excel 文件,如屏幕截图 #2 - #4 所示。请注意,两个 Excel 文件的布局相同,但内容不同。
在 SSIS 包上,创建三个变量,如屏幕截图 #5 所示。变量FolderPath
将包含 Excel 文件所在的路径; FileExtension
将包含 Excel 文件扩展名(在本例中为 *.xls),FilePath
应配置为指向一个有效的 Excel 文件(仅在初始配置期间需要Excel 连接管理器)。
在连接管理器中创建一个Excel connection
,指向一个有效的 Excel 文件,如屏幕截图 #6 所示。
在连接管理器中创建一个OLE DB Connection
,指向SQL Server。
在 SSIS 包上,将 ForEach 循环容器和数据流任务放置在 ForEach 循环容器中,如屏幕截图 #7 所示。
如屏幕截图 #8 和 #9 所示配置 ForEach 循环容器。通过这样做,变量 User::FilePath
将包含位于文件夹 c:\temp\
中的完整路径 Excel 文件,并借助 Collection
部分中配置的变量 FolderPath
和 FileExtension
。
在数据流任务中,放置 Excel source
以读取 Excel 文件数据,并放置 OLE DB destination
将数据插入 SQL Server 表 dbo.Location。数据流任务应如屏幕截图 #10 所示。
如屏幕截图 #11 和 #12 所示配置 Excel 源以使用 Excel 连接读取数据。
如屏幕截图 #13 和 #14 所示配置 OLE DB 目标,以将数据插入 SQL Server 数据库表。
在连接管理器的Excel连接上,配置表达式ExcelFilePath
和ServerName
,如屏幕截图#15所示。
数据流任务的示例执行如屏幕截图 #16 所示。
屏幕截图 #17 显示包执行后表 dbo.Location 中的数据。请注意,它包含截图 #3 和 #4 中显示的 Excel 文件中的所有行。
在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 源似乎没有表达式编辑器?!感谢您的帮助以及您对社区所做的工作。 很棒的解释!优秀 如何在这里使用您的答案来回答我的问题:***.com/questions/23158021/…(每次更改表达式时都会出错) 为什么这个答案没有被接受为答案?以上是关于如何将具有不同名称和相同架构的 Excel 文件导入数据库?的主要内容,如果未能解决你的问题,请参考以下文章
如何在5个不同的文件夹中合并5个具有相同名称的Excel文件?
自动创建一个视图,该视图将所有其他具有相同名称但不同前缀和不同模式的视图联合起来
如何在 Excel 中组合具有不同列名和列顺序的多个 CSV 文件?