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

Lrn*_*Lrn 4 sql excel ssis

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

小智 18

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

一步一步的过程:

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

  2. 在路径中创建两个Excel文件,c:\temp\如屏幕截图#2 - #4所示.请注意,两个Excel文件具有相同的布局但内容不同.

  3. 在SSIS包上,创建三个变量,如屏幕截图#5所示.变量FolderPath将包含Excel文件所在的路径; FileExtension将包含Excel文件扩展名(在这种情况下为*.xls),并且FilePath应配置为指向一个有效的Excel文件(仅在初始配置Excel连接管理器时才需要).

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

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

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

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

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

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

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

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

  12. 截屏#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

  • 对于使用.csv文件的相同进程,应在"平面文件连接管理器"上使用哪些表达式?我说的是截图#15,但是有.csv文件.对于使用平面文件连接管理器的csv文件,表达式是不同的. (2认同)