原因:数据同步程序出错,现在有已生成的一大堆日志如下图所示:
现在要从日志里找出可能出错的信息。由于每天的日志都比较大,因此txt文件打开很慢。所以决定用SSIS将所有的日志导入到SQL SERVER数据库中进行分析。
日志格式如下图所示:
可以分为两列,[00:00:09]为time列,后面的为content列。但每天的时间都是相同的。所以还需要把文件名中的日期也同时加到数据库中。这样数据库中的最终结果要有三列,date,time,content.另外由于如上图所示,有相当多的无用信息。所以还要将这些无用信息删除掉。最终的结果如下图所示:
---------------------------------------------
步骤:
1,在数据库中建目的表:
2,新建SSIS包,在控制流中放入一个foreach loop,设置其属性为:
新建一个变量:filepath用来传递每个文件的路径信息。
3,在foreach loop容器中,加入数据流任务,双击打开数据流,拉进一个平面文件源。双击打开。新建数据源如下图所示:
4.拉进一个脚本组件。设置属性如下图所示:
在脚本页面中选择设计脚本,打开VS,添加如下代码:
5.拉入OLEDB数据目标,新建数据库连接:test.log_klupdate,并设置属性如下所示:
6,在连接管理器中选中log_txt,在右边属性工具栏中点击expression右边的按钮如下图所示:
在以上页面中设置如下面所示内容,将变量值传给connectionstring
这样转换过程设计完成。
7,下面再在foreach loop下一步加入sql任务删除无用数据。设置如下图所示:
最终结果为:
![](https://i-blog.csdnimg.cn/blog_migrate/b7602481ab1ebcce6ebc78b062046c78.png)
现在要从日志里找出可能出错的信息。由于每天的日志都比较大,因此txt文件打开很慢。所以决定用SSIS将所有的日志导入到SQL SERVER数据库中进行分析。
日志格式如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/068e972f9b83144c3c9cd5ff67ecc038.png)
可以分为两列,[00:00:09]为time列,后面的为content列。但每天的时间都是相同的。所以还需要把文件名中的日期也同时加到数据库中。这样数据库中的最终结果要有三列,date,time,content.另外由于如上图所示,有相当多的无用信息。所以还要将这些无用信息删除掉。最终的结果如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/8c22d247e871b53eac0e19c4bb5a9774.png)
---------------------------------------------
步骤:
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]
[id] [int] IDENTITY(1,1) NOT NULL,
[date] [varchar](50) NULL,
[time] [varchar](20) NULL,
[content] [text] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
![](https://i-blog.csdnimg.cn/blog_migrate/faf4112f85c9236fb0a8173b3df8963b.png)
新建一个变量:filepath用来传递每个文件的路径信息。
![](https://i-blog.csdnimg.cn/blog_migrate/daa4269d3bea424aed22902a352c8f2c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d8c227bfe9fff5d9be9d3b7ba864e2ff.png)
3,在foreach loop容器中,加入数据流任务,双击打开数据流,拉进一个平面文件源。双击打开。新建数据源如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/d7027fe232e9adb0e758224ae000651b.png)
4.拉进一个脚本组件。设置属性如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/56e13175bb3267bad2d429c64bf589a5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9972743fed53a8efd77acd0a6902eae8.png)
在脚本页面中选择设计脚本,打开VS,添加如下代码:
Row.tcon = Row.con
Row.ttime = Replace(Replace(Row.time, "[", ""), "]", "")
Row.tdate = Left(Right(Variables.filepath.ToString, 16), 8)
关闭VS,一路确定回到设计环境。
Row.ttime = Replace(Replace(Row.time, "[", ""), "]", "")
Row.tdate = Left(Right(Variables.filepath.ToString, 16), 8)
5.拉入OLEDB数据目标,新建数据库连接:test.log_klupdate,并设置属性如下所示:
![](https://i-blog.csdnimg.cn/blog_migrate/808f7b106e1947aa08d90defdea13c18.png)
6,在连接管理器中选中log_txt,在右边属性工具栏中点击expression右边的按钮如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/52249322f983fdb375194439d60c349e.png)
在以上页面中设置如下面所示内容,将变量值传给connectionstring
![](https://i-blog.csdnimg.cn/blog_migrate/996bb8cf7bff0ea3f79cc5c419970c71.png)
这样转换过程设计完成。
7,下面再在foreach loop下一步加入sql任务删除无用数据。设置如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/0c8c3caa30508a297ad86998634e6413.png)
最终结果为:
![](https://i-blog.csdnimg.cn/blog_migrate/5130cad137928bbd9f5c665d6c504e2a.png)
本文转自 boyi55 51CTO博客,原文链接:http://blog.51cto.com/boyi55/53940,如需转载请自行联系原作者