博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SSIS:用foreach loop将一个目录下的内容导入到数据库中。
阅读量:5767 次
发布时间:2019-06-18

本文共 1131 字,大约阅读时间需要 3 分钟。

原因:数据同步程序出错,现在有已生成的一大堆日志如下图所示:


现在要从日志里找出可能出错的信息。由于每天的日志都比较大,因此txt文件打开很慢。所以决定用SSIS将所有的日志导入到SQL SERVER数据库中进行分析。

日志格式如下图所示:


可以分为两列,[00:00:09]为time列,后面的为content列。但每天的时间都是相同的。所以还需要把文件名中的日期也同时加到数据库中。这样数据库中的最终结果要有三列,date,time,content.另外由于如上图所示,有相当多的无用信息。所以还要将这些无用信息删除掉。最终的结果如下图所示:


---------------------------------------------

步骤:

1,在数据库中建目的表:

CREATE TABLE [dbo].[log_klupdate](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [date] [varchar](50) NULL,
    [time] [varchar](20) NULL,
    [content] [text] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
  
2,新建SSIS包,在控制流中放入一个foreach loop,设置其属性为:


新建一个变量:filepath用来传递每个文件的路径信息。



3,在foreach loop容器中,加入数据流任务,双击打开数据流,拉进一个平面文件源。双击打开。新建数据源如下图所示:


4.拉进一个脚本组件。设置属性如下图所示:



在脚本页面中选择设计脚本,打开VS,添加如下代码:

        Row.tcon = Row.con
        Row.ttime = Replace(Replace(Row.time, "[", ""), "]", "")
        Row.tdate = Left(Right(Variables.filepath.ToString, 16), 8)
关闭VS,一路确定回到设计环境。

5.拉入OLEDB数据目标,新建数据库连接:test.log_klupdate,并设置属性如下所示:



6,在连接管理器中选中log_txt,在右边属性工具栏中点击expression右边的按钮如下图所示:


在以上页面中设置如下面所示内容,将变量值传给connectionstring


这样转换过程设计完成。

7,下面再在foreach loop下一步加入sql任务删除无用数据。设置如下图所示:


最终结果为:

本文转自 boyi55 51CTO博客,原文链接:http://blog.51cto.com/boyi55/53940,如需转载请自行联系原作者
你可能感兴趣的文章
KVO原理分析及使用进阶
查看>>
【348天】每日项目总结系列086(2018.01.19)
查看>>
【JS基础】初谈JS现有的数据类型
查看>>
【294天】我爱刷题系列053(2017.11.26)
查看>>
Microsoft发布了Azure Bot Service和LUIS的GA版
查看>>
Google发布Puppeteer 1.0
查看>>
.NET开源现状
查看>>
可替换元素和非可替换元素
查看>>
2016/08/25 The Secret Assumption of Agile
查看>>
(Portal 开发读书笔记)Portlet间交互-PortletSession
查看>>
搭建vsftpd服务器,使用匿名账户登入
查看>>
AMD改善Linux驱动,支持动态电源管理
查看>>
JAVA中循环删除list中元素的方法总结
查看>>
Java虚拟机管理的内存运行时数据区域解释
查看>>
人人都会深度学习之Tensorflow基础快速入门
查看>>
ChPlayer播放器的使用
查看>>
js 经过修改改良的全浏览器支持的软键盘,随机排列
查看>>
Mysql读写分离
查看>>
Oracle 备份与恢复学习笔记(5_1)
查看>>
Oracle 备份与恢复学习笔记(14)
查看>>