当前位置: 首页 > news >正文

SSIS:用foreach loop将一个目录下的内容导入到数据库中

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

现在要从日志里找出可能出错的信息。由于每天的日志都比较大,因此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任务删除无用数据。设置如下图所示:

最终结果为:

相关文章:

  • 必须声明标量变量 @sum_level。_C++ Primer 笔记 - 变量
  • JAVA 中URL链接中文参数乱码的处理方法
  • 宝乐机器人集团作_「驰众机器人|情报」秦川集团起草的《机器人用精密摆线齿轮减速器》标准获发布...
  • java读取xml文件操作
  • 5ecsgo启动失败2错误代码2_Spring Boot 2.2 增加了一个新功能,启动飞起~
  • 现代科技概论_现代科技概论课程:力与运动3
  • 负载均衡技术全攻略
  • opencv图像分割python毕业设计_python用opencv完成图像分割并进行目标物的提取
  • SOA将使C++在2008年重现活力
  • 邮件合并保存为一个个单独的文档_巧用WPS“邮件合并”功能,让工作更加高效...
  • CIO构建网络整体安全解决方案
  • 微信小程序超级占内存_实测:微信小程序占多少内存?或许真没有你想象的那么“小”!...
  • 创新与价值
  • matlab如何求指标的权向量_层次分析法中,求出矩阵最大特征值对应的特征向量,再分别平方就是权向量么用matl......
  • js微信抢红包脚本代码_JavaScript语言基于AutoJs简易微信抢红包参考大佬修改
  • 【技术性】Search知识
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • angular2 简述
  • leetcode讲解--894. All Possible Full Binary Trees
  • nodejs:开发并发布一个nodejs包
  • vue脚手架vue-cli
  • zookeeper系列(七)实战分布式命名服务
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 复习Javascript专题(四):js中的深浅拷贝
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 来,膜拜下android roadmap,强大的执行力
  • 思考 CSS 架构
  • 网络应用优化——时延与带宽
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 进程与线程(三)——进程/线程间通信
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • #{} 和 ${}区别
  • #QT(智能家居界面-界面切换)
  • (1)Nginx简介和安装教程
  • (13)Hive调优——动态分区导致的小文件问题
  • (SpringBoot)第二章:Spring创建和使用
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (四)图像的%2线性拉伸
  • (转载)Linux 多线程条件变量同步
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET 4.0中的泛型协变和反变
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • @property python知乎_Python3基础之:property
  • @Repository 注解
  • [APIO2012] 派遣 dispatching
  • [bzoj2957]楼房重建
  • [BZOJ4554][TJOI2016HEOI2016]游戏(匈牙利)
  • [CareerCup][Google Interview] 实现一个具有get_min的Queue
  • [CSS]盒子模型
  • [Enterprise Library]调用Enterprise Library时出现的错误事件之关闭办法
  • [JavaEE] 线程与进程的区别详解
  • [JS设计模式]Prototype Pattern
  • [MRCTF2020]Ez_bypass1