在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. Linux安全之密钥登录

    我们一般使用 PuTTY 等 SSH 客户端来远程管理 Linux 服务器.但是,一般的密码方式登录,容易有密码被暴力破解的问题.所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口,或者 ...

  2. AC日记——「SCOI2016」幸运数字 LiBreOJ 2013

    「SCOI2016」幸运数字 思路: 线性基: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 20005 # ...

  3. ZOJ 3327 Friend Number

    构造. (1)如果数字中带有$0$: 1.只有个位是$0$,这种情况就是给输入的数字$+10$再输出即可. 2.其余情况就是给输入的数字$+1$再输出即可. (2)如果数字中没有$0$: 从个位开始一 ...

  4. 洛谷P1801 黑匣子

    题目传送门 分析:这题和另外一个题目中位数非常相似,有兴趣可以先看看,比这一题简单.首先暴力模拟还是别想了,估计30%的数据都有点悬.正解应该是用二叉堆.但是如果用一个堆当然不方便,所以建两个堆,一个 ...

  5. 训练continue

    11.16 树状数组 http://codeforces.com/contest/1070/problem/C digit sum+% dp http://codeforces.com/contest ...

  6. Flask实战第61天:帖子板块过滤显示

    先在显示的帖子是所有版块的帖子,这节我们来完成点击某个版块,则显示此版块的帖子 要完成这个功能,我们需要在前端传递板块的id到后台, 编辑front_index.html 编辑首页视图 编辑板块选中样 ...

  7. 单能X射线产生方法

    主要是荧光 利用布拉格准则, 关键词如下.. 国内有些专利 monochromating crystal spectrometer 物理实验设备名称翻译 ... 单色光检糖计 monochromati ...

  8. ubuntu14.04下安装爬虫工具scrapy

    scrapy是目前准备要学习的爬虫框架,其在ubuntu14.04下的安装过程如下: ubuntu14.04下默认安装了2.7的python以及setuptools,若未安装,可通过下面指令安装: s ...

  9. Android,几款apk工具

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 可以查看到链接的设备 可以查看到wifi密码,这个也是个开源的 可以查询驾照学时进度 可 ...

  10. PMP CMM

    CMM和PMP是两个不同的概念域,是用来解决不同问题的.我们所说的CMM,准确的说应该是叫做能力成熟度模型,北京猴子说的软件能力成熟度模型实际上应该称为SW-CMM,是CMM的一个子集.PMP可以看做 ...