SSIS之Foreach循环容器(文件枚举器)遍历文件(关键点 详细步骤 图文讲解)

最近半道接手了一个项目需要使用CSVtoSQL,因为关于SSIS包这个东西是别人已经创建好了的,但不相识,所以接手后就决定自己研究一下,创建SSIS包时,在Foreach循环容器的设置上抠破脑门,网上关于这方面的教程有好几个,不算多,步骤详细的就更少了,即便步骤详细的,拿到我电脑上也就不好使了,可能是版本的原因。不过其中的变量的因素是大家容易忽略的。后来看了下微软官方的文档:https://docs.microsoft.com/zh-cn/sql/integration-services/integration-services-tutorials?view=sql-server-ver15,再加上模仿现有的SSIS包,才弄成功了。

为了自己留个笔记,也为了帮助后来的朋友,决定写个在关键环节上详细一点的步骤和解说。

我的SSDT是2010独立版本的(不用随附到VS上),版本跨度不大的话,操作和使用上变化应该也不会大。

前面几个简单的步骤就不讲解了。

  • 新建OLE DB连接管理器
  • 新建包
  • 拖入foreach循环容器组件
  • 拖入数据流任务组件
  • 设置foreach循环容器

SSIS之Foreach循环容器(文件枚举器)遍历文件(关键点 详细步骤 图文讲解)_第1张图片

下图中,在变量映射中新建一个空值变量,注意是空值变量,然后进入仅修改名称或者命名空间即可

SSIS之Foreach循环容器(文件枚举器)遍历文件(关键点 详细步骤 图文讲解)_第2张图片

SSIS之Foreach循环容器(文件枚举器)遍历文件(关键点 详细步骤 图文讲解)_第3张图片

  • 将数据流任务拖入foreach循环容器,并新建和设定平面文件连接管理器(重点!)

最好是在此处新建平面文件连接管理器,因为在顶部工具栏里建的感觉有时候总会出错

SSIS之Foreach循环容器(文件枚举器)遍历文件(关键点 详细步骤 图文讲解)_第4张图片

 

接下来,去文件夹中选中任意一个文件(此处是为了让连接管理器先确定列名和数据类型),并选定好合适的编码(一般都是UTF8吧,反正从平面文件开始,到包设定,再到数据库,编码要始终一致,虽然也可以不是UTF8)

SSIS之Foreach循环容器(文件枚举器)遍历文件(关键点 详细步骤 图文讲解)_第5张图片

 

点击“列”,不做任何操作,但是要走一遍流程,以便让其加载数据类型

SSIS之Foreach循环容器(文件枚举器)遍历文件(关键点 详细步骤 图文讲解)_第6张图片

 

 

 

 

       接下来是高级,依次设定每一项的数据类型和数据长度,DT_STR是非UTF8的字符串,此处需要改成UTF字符串类型:DT_WSTR,关于SSIS数据类型与数据库数据类型的对应关系,大家可以去网上查一查。

另外,这个页面下方虽然有“建议类型”,但通常不准确,尤其是在导入文件数据量较少的情况下,因此这里必须手动修改。

SSIS之Foreach循环容器(文件枚举器)遍历文件(关键点 详细步骤 图文讲解)_第7张图片

修改完了,点击确定。

然后接下来,重新打开平面文件连接管理器,因为我们的目的是要遍历文件夹内所有文件,刚才只选了一个文件,因此我们需要将文件名去掉,仅保留文件夹路径和文件后缀名,就像下面这样。再确定。

SSIS之Foreach循环容器(文件枚举器)遍历文件(关键点 详细步骤 图文讲解)_第8张图片

 

              在之前的步骤中,我们在foreach循环容器新建了一个空值变量。那个是给循环容器遍历文件名赋值用的。这里还有再建一个变量,点击顶部菜单栏的“SSIS”,变量数据类型:String,文件夹路径设为变量值。

SSIS之Foreach循环容器(文件枚举器)遍历文件(关键点 详细步骤 图文讲解)_第9张图片

SSIS之Foreach循环容器(文件枚举器)遍历文件(关键点 详细步骤 图文讲解)_第10张图片

此处文件路径后的“\”不能少,否则你会在接下来的“计算表达式”的步骤中看到例如 C:\工作\en\test_txt.txt,而正常的表达式应该是 C:\工作\en\test_txt\.txt。

 

然后点击平面文件连接管理器,打开属性,找到“Expression”,点击后面的三个小点。

SSIS之Foreach循环容器(文件枚举器)遍历文件(关键点 详细步骤 图文讲解)_第11张图片

SSIS之Foreach循环容器(文件枚举器)遍历文件(关键点 详细步骤 图文讲解)_第12张图片

SSIS之Foreach循环容器(文件枚举器)遍历文件(关键点 详细步骤 图文讲解)_第13张图片

       现在,平面文件链家管理器算是设置好了。

 

  • 拖入平面文件源和OLE DB目标,并设定好之后就可以遍历所有文件内容了

 

职场新人,初次发表文章,如有讲解不足之处,欢迎大家指正。

你可能感兴趣的:(SSIS之Foreach循环容器(文件枚举器)遍历文件(关键点 详细步骤 图文讲解))