Foreach控件使用
在SSIS中,Foreach控件可以循环处理选中的文件中的文件,例如sql文件,Excel文件等。下面就介绍一个比较经典的案例,将一个文件夹中包含的多个Excel文件循环导入至数据库中。
第一步:在数据库中创建一张测试表:
CREATE TABLE [dbo].[ShopInfo](
[ShopId] [varchar](255) NULL,
[ShopName] [varchar](255) NULL
) ON [PRIMARY]
第二步:创建两个测试用Excel文件,所包含信息如图:

第三步:新建一个SSIS项目,如图:

第四步:项目创建完毕以后,在控制流中拖入Foreach容器控件,然后双击控件(鼠标最好放在控件图标上),此时会弹出Foeach循环编辑器,先选集合选项,然后再选择Foreach枚举选择器,点击浏览,选中刚才创建的Excel的文件夹路径,最后修改文件的后缀名为xlsx。如下图所示:

第五步:选择变量映射,新建变量,变量名为:Num,容器选择当前的包容器,这里要注意一下,容器实际上指的是这个变量的作用范围,如果范围没有指定正确,这个变量是没有作用的,最后给一个默认值:0。如图所示:

第六步:在Foreach控件中,拖入一个数据流任务,然后双击这个任务,之后会进入数据流任务的工作界面,此时右侧会有一系列的控件,在数据流控件中找到Excel源,其意思就是说数据的来源是Excel,拖入Excel源控件之后,双击控件,进行数据源的设置。点击新建,再点浏览,选中之前准备好的Excel文件,任意选中一个即可。如图所示:

第七步:此时需要拖入一个数据转换控件,因为Excel中的字符中Uncoide,而我们刚才建立的表所包含的字段是varchar类型,如果不进行数据转换,数据是不会导入到数据库中,需要把数据转换成string。如图所示:

第八步:在数据流目标中,找到OLE DB数据源控件,拖入到工作界面,然后和数据转换控件进行连接,连接方式就是从数据转换控件点击一个绿色的箭头,连接到OLE DB数据源控件,连接之后,双击OLE DB数据源控件,进行目标源的设置,此时需要新建一个OLE DB连接管理器,其意思就是选择之前在第一步创建的ShopInfo所在数据库。连接管理器创建成功以后,再点击映射,此时控件已自动将需要映射的列映射好了,原因是因为我们之前进行的数据转换,所取的字段名和目标库中的表所包含的字段名是一样的。如图:


第十步:最关键的一步。右击Excel连接管理器,在弹出的对话框中,选中属性。在属性列表中找到Expresssions属性,在属性表达式编辑器中,在属性这一栏中,选择ExcelFilePath,在表达式这一栏中,选中之前我们建立的变量Num,然后点击确定。此时Excel报错了,这是正常的,因为改变了ExcelFilePath属性,我们只需要右击Excel数据源控件,找到属性ValidateExternalMedaData,默认为True,把它改为False,让Excel忽略这个错误,大功告成,如图所示:



第十一步:运行刚才建立的Package包即可。运行结果如下:


总结:在使用Foeach控件时,有两点需要注意,第一就是Foreach控件,变量映射,指定好变量,第二点,也是最重要的一点,就是修改Excel数据源的属性ValidateExternalMedaData为False,让控件忽略修改ExcelFilePath所带来的错误。
Foreach控件使用的更多相关文章
- foreach控件的运用(非原创)http://blog.chinaunix.net/uid-26884465-id-3416869.html
人们对从认识事物都有一个具体到抽象的过程,学习Jmeter也不例外,通过一个实例来进行学习,一方面可以让初学者有所见即所得的信心,另一方面,其实也是在初学者心中留下了对这事物的一个朦胧的印象,这在以后 ...
- 利用foreach对页面控件的遍历 及三目运算符的使用
1.利用foreach对页面控件的遍历 及三目运算符的使用 利用div将一组CheckBox放在一起用于遍历 <body> <form id="form1" ru ...
- CheckBox和控件Foreach循环
.aspx代码例如以下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Sam ...
- JavaScript日历控件开发 C# 读取 appconfig文件配置数据库连接字符串,和配置文件 List<T>.ForEach 调用异步方法的意外 ef 增加或者更新的习惯思维 asp.net core导入excel 一个二级联动
JavaScript日历控件开发 概述 在开篇之前,先附上日历的代码地址和演示地址,代码是本文要分析的代码,演示效果是本文要实现的效果代码地址:https://github.com/aspwebc ...
- 【转载】foreach+Control.Controls无法一次性移除所有子控件解决方法
博客转载地址:http://www.mzwu.com/article.asp?id=2254 //在panel1中添加20个Button ; ; ; i <= ; i++) { ) row++; ...
- WinRT自定义控件第一 - 转盘按钮控件
之前的文章中,介绍了用WPF做一个转盘按钮控件,后来需要把这个控件移植到WinRT时,遇到了很大的问题,主要原因在于WPF和WinRT还是有很大不同的.这篇文章介绍了这个移植过程,由于2次实现的控件功 ...
- WPF自定义控件第二 - 转盘按钮控件
继之前那个控件,又做了一个原理差不多的控件.这个控件主要模仿百度贴吧WP版帖子浏览界面左下角那个弹出的按钮盘.希望对大家有帮助. 这个控件和之前的也差不多,为了不让大家白看,文章最后发干货. 由于这个 ...
- WPF自定义控件第一 - 进度条控件
本文主要针对WPF新手,高手可以直接忽略,更希望高手们能给出一些更好的实现思路. 前期一个小任务需要实现一个类似含步骤进度条的控件.虽然对于XAML的了解还不是足够深入,还是摸索着做了一个.这篇文章介 ...
- CSharpGL(26)在opengl中实现控件布局/渲染文字
CSharpGL(26)在opengl中实现控件布局/渲染文字 效果图 如图所示,可以将文字.坐标轴固定在窗口的一角. 下载 CSharpGL已在GitHub开源,欢迎对OpenGL有兴趣的同学加入( ...
随机推荐
- Django-分頁組件
一.仿django分页功能自己实现 urls.py 1 2 3 4 5 6 7 8 9 from django.conf.urls import url from django.contrib imp ...
- Nginx配置问题总结
1.Nginx直接下载解压,有个nginx.exe文件,双击即开启Nginx服务(windows系统下).默认是80端口. 若服务无法启动,考虑以下三方面问题: (1)端口号80是否被占用 (2)防火 ...
- 596. Classes More Than 5 Students
There is a table courses with columns: student and class Please list out all classes which have more ...
- Linux下源码安装jdk
1.到官网下载 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- windows安装elasticsearch和elasticsearch-head插件
1.去官网下载最新软件 选择zip包,https://www.elastic.co/downloads/elasticsearch 2.下载node 必须 > 6.0已上 3.解压elastic ...
- python模块安装路径
Unix(Linux): prefix/lib/pythonX.Y/site-packages 默认路径:/usr/local/lib/pythonX.Y/site-packages 另外,在Unix ...
- 【转】python 之 collections
转自:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0014110312394 ...
- netbeans 开启调试
在URL中加入一个参数 XDEBUG_SESSION_START=netbeans-xdebug
- ZOJ 3495 Lego Bricks
计算几何,暴力. 题目中有一句话:$The$ $mass$ $of$ $each$ $brick$ $is$ $equally$ $distributed$ $and$ $it$ $will$ $be ...
- Master定理学习笔记
前言 \(Master\)定理,又称主定理,用于程序的时间复杂度计算,核心思想是分治,近几年\(Noip\)常考时间复杂度的题目,都需要主定理进行运算. 前置 我们常见的程序时间复杂度有: \(O(n ...