图解SSIS批量导入Excel文件

将一个目录下(可以包括子目录)结构一样的excel文件批量导入sql2005,可以用ssis来定制任务.下面用大量图片完全说明整个过程.

1、建立测试excel文件,假设有a b c d四个字段,保存在f:\excel目录下
图解SSIS批量导入Excel文件_第1张图片
 并复制很多个一样的文件
图解SSIS批量导入Excel文件_第2张图片
2、打开Microsoft Visual Studio 2005或者随sql2005安装的SQL Server Business Intelligence Development Studio,新建一个商业智能项目。
图解SSIS批量导入Excel文件_第3张图片
3、工具箱拖一个Foreach循环容器
图解SSIS批量导入Excel文件_第4张图片
4、编辑容器,设定遍历目录和其他参数
图解SSIS批量导入Excel文件_第5张图片
5、新建一个映射变量,用来存储遍历当中的文件路径
图解SSIS批量导入Excel文件_第6张图片
6、怎么存储不用你关心,你只要指定一个变量名就ok了
图解SSIS批量导入Excel文件_第7张图片
7、确定后,容器生成完毕,接着拖一个数据流任务到容器中
图解SSIS批量导入Excel文件_第8张图片

8、切换到数据流tab页,拖一个excel源
图解SSIS批量导入Excel文件_第9张图片
9、编辑excel源,选择一个刚刚的任意excel
图解SSIS批量导入Excel文件_第10张图片
10、选择一个sheet
图解SSIS批量导入Excel文件_第11张图片
11、拖一个ole db目标到数据流中
图解SSIS批量导入Excel文件_第12张图片
12、按住excel源的绿色箭头,拖动到oledb目标上
图解SSIS批量导入Excel文件_第13张图片
13、编辑oledb目标,选择一个sqlserver数据表,这个表必须是已经存在的,这里我们建立一个ssistest数据库,生成一个和excel结构一样的表tt
create table tt(a varchar(100),b varchar(100),c varchar(100),d varchar(100))
然后用oledb去连接
图解SSIS批量导入Excel文件_第14张图片

14、编辑字段映射关系,结构一样,它会自动找到
图解SSIS批量导入Excel文件_第15张图片
15、编辑下面的excel链接管理器,这里将用到foreach的变量来代替刚刚选择的那个excel文件
图解SSIS批量导入Excel文件_第16张图片
16、连接管理器的属性中设置变量的映射用法
图解SSIS批量导入Excel文件_第17张图片
17、expressions的属性编辑列表中,左边选择 excelfilepath,这个是连接管理器的属性,我们将用变量来代替
图解SSIS批量导入Excel文件_第18张图片
18、再点击表达式的属性编辑按钮,把列表中的变量用户::xlspath变量拖到下面的表达式框中
图解SSIS批量导入Excel文件_第19张图片
19、这时ssis将会报错,并给出警告
图解SSIS批量导入Excel文件_第20张图片
20、上图中黄颜色的区域,右键-属性,打开控制流的属性窗口,设置DelayValidation为True就可以了。
图解SSIS批量导入Excel文件_第21张图片

经过以上20步的配置,整个过程就结束了,你可以按下F5看看效果,文件夹下所有的excel将被批量导入数据库。另外可以通过sqlserver的作业来调用ssis的包实现定期自动把目录下的excel导入数据库。

 

 

将一个excel文件中的所有相同结构的工作表导入到sql2005的同一张表中。下面用大量图片完全说明整个过程.
1、测试环境为一张excel中的三个sheet
图解SSIS批量导入Excel文件_第22张图片

2、打开Microsoft Visual Studio 2005或者随sql2005安装的SQL Server Business Intelligence Development Studio,新建一个商业智能项目。
图解SSIS批量导入Excel文件_第23张图片

3、连接管理器中新建一个ADO.Net连接
图解SSIS批量导入Excel文件_第24张图片

4、新建连接
图解SSIS批量导入Excel文件_第25张图片
5、选择jet Ole Db数据源
图解SSIS批量导入Excel文件_第26张图片

6、选择一个excel文件,他默认是mdb的,你需要显示所有文件(*.*)才能选择Excel
图解SSIS批量导入Excel文件_第27张图片
7、选择全部-红色标记的地方选择excel5.0
图解SSIS批量导入Excel文件_第28张图片

这样用来遍历excel架构的链接就建立好了

8、新建一个循环容器
图解SSIS批量导入Excel文件_第29张图片

9、循环编辑器配置如下
图解SSIS批量导入Excel文件_第30张图片

10、新建变量映射,用来保存遍历到表名

图解SSIS批量导入Excel文件_第31张图片

11、变量如图
图解SSIS批量导入Excel文件_第32张图片

图解SSIS批量导入Excel文件_第33张图片

循环容器就ok了

12、容器中添加数据流任务
图解SSIS批量导入Excel文件_第34张图片

13、设置excel源
图解SSIS批量导入Excel文件_第35张图片

14、设置Excel连接和工作表
图解SSIS批量导入Excel文件_第36张图片

15、设置oledb目标
图解SSIS批量导入Excel文件_第37张图片

16、绿色箭头连起来
图解SSIS批量导入Excel文件_第38张图片

17、编辑oledb目标,选择一个sqlserver数据表,这个表必须是已经存在的,这里我们建立一个ssistest数据库,生成一个和excel结构一样的表tt
create table tt(a varchar(100),b varchar(100),c varchar(100),d varchar(100))
然后用oledb去连接
图解SSIS批量导入Excel文件_第39张图片

18、编辑映射,关系,默认的就可以了
图解SSIS批量导入Excel文件_第40张图片

19、最后需要将刚刚选定的excel源用循环变量来代替,在高级设置中(我也找了好久)
图解SSIS批量导入Excel文件_第41张图片

20、配置如下
图解SSIS批量导入Excel文件_第42张图片

21、完成,可以按下调试按钮,来启动任务测试
图解SSIS批量导入Excel文件_第43张图片


同理你可以设置目标的高级,来导入sheet不同结构的表格,并且可以结合我的前面一片文章,批量导入文件夹下所有excel文件来完成批量导入所有excel的所有sheet。
演示案例:让系统自动监视文件夹,并把文件夹下面的excel文件导入到sql中,之后清空目录。这个过程以往都需要写程序来实现或者定时执行,现在可以用ssis来订制任务完成。
 在阅读本文之前,你先要学会如何用ssis来批量导入数据,可以参考我先前的blog文章,这里我们用相同的数据交换背景来演示。http://blog.csdn.net/jinjazz/archive/2008/07/25/2710169.aspx
 
1、建立测试环境,目录为F:\excel 下面保存需要导入的excel文件,F:\excel\upload目录用来让ssis自动监视,当我们上传了一批excel到F:\excel后,可以在F:\excel\upload目录中新建一个空文件,当ssis监视到这个目录有新增文件后就会遍历F:\excel目录依次导入表格。为什么不直接监视F:\excel目录呢?因为要考虑批量上传的问题,所以不可以直接监视数据目录。
图解SSIS批量导入Excel文件_第44张图片
2、这里假设你已经学会了ssis的基本使用办法和批量导入excel的方法,不会也不要紧,只需要参考一下http://blog.csdn.net/jinjazz/archive/2008/07/25/2710169.aspx这篇就可以了,我们已这篇文章的成果为基础,增加一个wmi监视任务用来监视文件夹和两个文件系统任务用来处理导入后的文件。如图:
图解SSIS批量导入Excel文件_第45张图片
3、wmi监视任务的设置也很简单:
图解SSIS批量导入Excel文件_第46张图片

4、其中wmi连接设置:
图解SSIS批量导入Excel文件_第47张图片
5、wmi查询语句设置:
SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE TargetInstance ISA "CIM_DirectoryContainsFile" and TargetInstance.GroupComponent= "Win32_Directory.Name=\"f:\\\\excel\\\\upload\""
图解SSIS批量导入Excel文件_第48张图片

6、循环内的文件系统任务用来删除已经导入的excel,文件名沿用枚举得到的变量,而操作选择“删除文件”
图解SSIS批量导入Excel文件_第49张图片

7、循环外的文件系统任务用来清除监视文件夹里面的那个新增文件
图解SSIS批量导入Excel文件_第50张图片

8、这样我们就完成了整个配置,调试一下
图解SSIS批量导入Excel文件_第51张图片

9、copy一些excel到f:\excel中,格式沿用上面参考文章中的excel

图解SSIS批量导入Excel文件_第52张图片
10、在upload目录中新建一个文本文档
图解SSIS批量导入Excel文件_第53张图片

11、快速切换回设计器中,可以看到执行结果
图解SSIS批量导入Excel文件_第54张图片

12、整个过程结束,你会发现excle文件已经导入到sql中,并且已导入的文件连同新建的txt文件都已经被删除。这是ssis自动作业的一个简单的例子。

你可以把上面的步骤扔到一个循环容器中让他不停的监视,因为这个过程结束后wmi监视就结束了。
你可以用其他复杂的wmi来实现任务调度,比如监视服务器性能,磁盘空间等。

你可能感兴趣的:(Excel)