如何将具有不同名称和相同架构的Excel文件导入数据库?

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

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

一步一步的过程:

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

  2. 在pathc:\temp\创build两个Excel文件,如屏幕截图# 2 – # 4所示 。 请注意,两个Excel文件具有相同的布局但内容不同。

  3. 在SSIS包中,创build三个variables,如屏幕截图# 5所示。 variablesFolderPath将包含Excel文件所在的path; FileExtension将包含Excel文件扩展名(在本例中为* .xls ), FilePath应该configuration为指向一个有效的Excel文件(这只在Excel连接pipe理器的初始configuration期间是必需的)。

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

  5. 在指向SQL Server的连接pipe理器中创build一个OLE DB Connection

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

  7. configurationForEach循环容器,如屏幕截图# 8和# 9所示 。 通过这样做,variablesUser::FilePath将包含位于文件夹c:\temp\的完整pathExcel文件,并且在Collection部分configurationvariablesFolderPathFileExtension

  8. 在数据stream任务内部,放置Excel source文件以读取Excel文件数据和O LE DB destination ,将数据插入到SQL Server表dbo.Location中 。 数据stream任务应该如截屏# 10所示。

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

  10. 如屏幕截图# 13和# 14所示configurationOLE DB目标,将数据插入到SQL Server数据库表中。

  11. 在连接pipe理器的Excel连接中,configurationexpression式ExcelFilePathServerName ,如屏幕截图# 15所示。

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

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

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

希望有所帮助。

屏幕截图#1:

1

屏幕截图#2:

2

屏幕截图3:

3

屏幕截图#4:

4

屏幕截图5:

五

屏幕截图#6:

6

屏幕截图#7:

7

屏幕截图#8:

8

屏幕截图#9:

9

屏幕截图#10:

10

屏幕截图#11:

11

屏幕截图#12:

12

屏幕截图#13:

13

屏幕截图#14:

14

屏幕截图#15:

15

屏幕截图#16:

16

屏幕截图#17:

17

屏幕截图#18:

18