如何将具有不同名称和相同架构的Excel文件导入数据库?
如何从每次具有不同文件名的Excel源文件中将数据导入到SSIS中的sql server表中(示例excel文件名:abc123,123abc,ab123c等)
实现这一目的的一种可能的方法是在Control Flow
选项卡中使用ForEach Loop container
,然后在控制stream任务中放置Data Flow task
stream任务。 我已经在下面的例子中解释了这个过程。 本示例使用SQL Server
后端作为目标,并使用Excel 97-2003
格式.xls
作为源文件。 请注意 ,Excel文件应该是相同的格式。
一步一步的过程:
-
创build一个名为
dbo.Location
的表,如屏幕截图# 1所示。 此示例将通过读取具有相同布局的三个不同Excel文件来填充此表。 屏幕截图显示了包执行之前的一个空表。 -
在path
c:\temp\
创build两个Excel文件,如屏幕截图# 2 – # 4所示 。 请注意,两个Excel文件具有相同的布局但内容不同。 -
在SSIS包中,创build三个variables,如屏幕截图# 5所示。 variables
FolderPath
将包含Excel文件所在的path;FileExtension
将包含Excel文件扩展名(在本例中为* .xls ),FilePath
应该configuration为指向一个有效的Excel文件(这只在Excel连接pipe理器的初始configuration期间是必需的)。 -
在连接pipe理器中创build一个
Excel connection
,指向一个有效的Excel文件,如屏幕截图# 6所示。 -
在指向SQL Server的连接pipe理器中创build一个
OLE DB Connection
。 -
在SSIS包中,在ForEach循环容器中放置ForEach循环容器和数据stream任务,如屏幕截图# 7所示。
-
configurationForEach循环容器,如屏幕截图# 8和# 9所示 。 通过这样做,variables
User::FilePath
将包含位于文件夹c:\temp\
的完整pathExcel文件,并且在Collection
部分configurationvariablesFolderPath
和FileExtension
。 -
在数据stream任务内部,放置
Excel source
文件以读取Excel文件数据和OLE DB destination
,将数据插入到SQL Server表dbo.Location中 。 数据stream任务应该如截屏# 10所示。 -
如屏幕截图# 11和# 12所示configurationExcel源,以使用Excel连接读取数据。
-
如屏幕截图# 13和# 14所示configurationOLE DB目标,将数据插入到SQL Server数据库表中。
-
在连接pipe理器的Excel连接中,configurationexpression式
ExcelFilePath
和ServerName
,如屏幕截图# 15所示。 -
数据stream任务的示例执行如屏幕截图# 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: