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

时间:2011-05-31 16:24:00

标签: sql excel ssis

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

1 个答案:

答案 0 :(得分:18)

实现此目标的一种可能方法是在ForEach Loop container标签中使用Control Flow,然后在控制流任务中放置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. 在指向SQL Server的连接管理器中创建OLE DB Connection

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

  7. 配置ForEach循环容器,如屏幕截图# 8 和# 9 所示。通过执行此操作,变量User::FilePath将包含位于c:\temp\文件夹中的完整路径Excel文件,并在FolderPath上配置变量FileExtensionCollection的帮助部分。

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

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

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

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

  13. 数据流任务的示例执行显示在屏幕截图# 16 中。

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

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

  16. 希望有所帮助。

    屏幕截图#1:

    1

    屏幕截图#2:

    2

    屏幕截图#3:

    3

    屏幕截图#4:

    4

    屏幕截图#5:

    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