在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控件使用的更多相关文章

  1. foreach控件的运用(非原创)http://blog.chinaunix.net/uid-26884465-id-3416869.html

    人们对从认识事物都有一个具体到抽象的过程,学习Jmeter也不例外,通过一个实例来进行学习,一方面可以让初学者有所见即所得的信心,另一方面,其实也是在初学者心中留下了对这事物的一个朦胧的印象,这在以后 ...

  2. 利用foreach对页面控件的遍历 及三目运算符的使用

    1.利用foreach对页面控件的遍历 及三目运算符的使用 利用div将一组CheckBox放在一起用于遍历 <body> <form id="form1" ru ...

  3. CheckBox和控件Foreach循环

    .aspx代码例如以下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Sam ...

  4. JavaScript日历控件开发 C# 读取 appconfig文件配置数据库连接字符串,和配置文件 List<T>.ForEach 调用异步方法的意外 ef 增加或者更新的习惯思维 asp.net core导入excel 一个二级联动

    JavaScript日历控件开发   概述 在开篇之前,先附上日历的代码地址和演示地址,代码是本文要分析的代码,演示效果是本文要实现的效果代码地址:https://github.com/aspwebc ...

  5. 【转载】foreach+Control.Controls无法一次性移除所有子控件解决方法

    博客转载地址:http://www.mzwu.com/article.asp?id=2254 //在panel1中添加20个Button ; ; ; i <= ; i++) { ) row++; ...

  6. WinRT自定义控件第一 - 转盘按钮控件

    之前的文章中,介绍了用WPF做一个转盘按钮控件,后来需要把这个控件移植到WinRT时,遇到了很大的问题,主要原因在于WPF和WinRT还是有很大不同的.这篇文章介绍了这个移植过程,由于2次实现的控件功 ...

  7. WPF自定义控件第二 - 转盘按钮控件

    继之前那个控件,又做了一个原理差不多的控件.这个控件主要模仿百度贴吧WP版帖子浏览界面左下角那个弹出的按钮盘.希望对大家有帮助. 这个控件和之前的也差不多,为了不让大家白看,文章最后发干货. 由于这个 ...

  8. WPF自定义控件第一 - 进度条控件

    本文主要针对WPF新手,高手可以直接忽略,更希望高手们能给出一些更好的实现思路. 前期一个小任务需要实现一个类似含步骤进度条的控件.虽然对于XAML的了解还不是足够深入,还是摸索着做了一个.这篇文章介 ...

  9. CSharpGL(26)在opengl中实现控件布局/渲染文字

    CSharpGL(26)在opengl中实现控件布局/渲染文字 效果图 如图所示,可以将文字.坐标轴固定在窗口的一角. 下载 CSharpGL已在GitHub开源,欢迎对OpenGL有兴趣的同学加入( ...

随机推荐

  1. 一:Storm集群环境搭建

    第一:storm集群环境准备及部署[1]硬件环境准备--->机器数量>=3--->网卡>=1--->内存:尽可能大--->硬盘:无额外需求[2]软件环境准备---& ...

  2. 走进 UnitTest for Xamarin.Forms

    之前讲了 Xamarin.Forms 的 UITest 走进 UITest for Xamarin.Forms 走进 Xamarin Test Recorder for Xamarin.Forms 但 ...

  3. php详解和优化

    nginx结合php使用FastCGI方式 apache结合php,php是作为一个模块加载到apache中 (1)FastCGI工作原理 1.用户发送http请求报文给nginx服务器 2.ngin ...

  4. Ubuntu 16.04 LTS安装Docker并使用加速器

    参考优酷:http://v.youku.com/v_show/id_XMTkxOTYwODcxNg==.html?spm=a2h0k.8191407.0.0&from=s1.8-1-1.2 首 ...

  5. POJ 2777.Count Color-线段树(区间染色+区间查询颜色数量二进制状态压缩)-若干年之前的一道题目。。。

    Count Color Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 53312   Accepted: 16050 Des ...

  6. 深度学习应用系列(二) | 如何使用keras进行迁移学习,以训练和识别自己的图片集

    本文的keras后台为tensorflow,介绍如何利用预编译的模型进行迁移学习,以训练和识别自己的图片集. 官网 https://keras.io/applications/ 已经介绍了各个基于Im ...

  7. 【java】线程安全的整型类AtomicInteger

    一.遇见AtomicInteger 在看项目代码的时候看到这个类,发现其功能很简单,就是一个整型变量的类型,出于好奇看了其类定义. 该类位于java.util.concurrent.atomic下,在 ...

  8. python 打包详解

    基本步骤: 1. 写setup.py 2. 运行“python setup.py sdist” 3. 在当前目录下会生成文件夹“dist”,打包好的代码就在dist中,以“.tar.gz”的形式被压缩 ...

  9. Java 对象池实现

    http://blog.csdn.net/bryantd/article/details/1100019 http://www.cnblogs.com/devinzhang/archive/2012/ ...

  10. Codeforces Round #196 (Div. 1) 题解

    (CF唯一不好的地方就是时差……不过还好没去考,考的话就等着滚回Div. 2了……) A - Quiz 裸的贪心,不过要用矩阵乘法优化或者直接推通式然后快速幂.不过本傻叉做的时候脑子一片混乱,导致WA ...