如何从每次具有不同文件名的excel源文件将数据导入SSIS中的sql server表(示例excel文件名:abc123,123abc,ab123c等)
答案 0 :(得分:18)
实现此目标的一种可能方法是在ForEach Loop container
标签中使用Control Flow
,然后在控制流任务中放置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 所示。
在指向SQL Server的连接管理器中创建OLE DB Connection
。
在SSIS包上,在ForEach循环容器中放置ForEach循环容器和数据流任务,如屏幕截图# 7 所示。
配置ForEach循环容器,如屏幕截图# 8 和# 9 所示。通过执行此操作,变量User::FilePath
将包含位于c:\temp\
文件夹中的完整路径Excel文件,并在FolderPath
上配置变量FileExtension
和Collection
的帮助部分。
在数据流任务中,放置Excel source
以读取Excel文件数据,并放置O LE DB destination
以将数据插入SQL Server表 dbo.Location 。数据流任务应如屏幕截图# 10 。
配置Excel来源,如屏幕截图# 11 和# 12 所示,以使用Excel连接读取数据。
配置OLE DB目标,如屏幕截图# 13 和# 14 所示,将数据插入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: