ssis.docx
《ssis.docx》由会员分享,可在线阅读,更多相关《ssis.docx(16页珍藏版)》请在冰豆网上搜索。
ssis
使用SSIS创建一个简单的IntegrationServicesProject:
File->New->Project->BusinessIntellegenceProjects->IntegrationServicesProject
(新建项目1)
(新建项目2)
添加一个ForeachLoopContainer
双击这个ForeachLoopContainer,点击左边的Collection,选择来源文件目录(Folder),输入文件类型(Files)。
点击VariableMappings,点击NewVariable,在Name输入变量名称。
这个变量是目录循环中每个文件的值,稍后会用在每个文件的处理中。
再在里面添加一个DataFlowTask
,双击这个DataFlowTask,进入了DataFlow标签(ControlFlow右边)。
因为原始文件是从测量表读取出来然后写到CSV文件的,所以我们使用FlatFileSource(就是文本文件,CSV文件也属于这类)。
双击FlatFileSource,FlatFileconnectionmanager,点右边的New新建一个文本文件连接,给连接一个名字,选择一个例子文件,按照你的情况输入headerrowstoskip(跳过头列),如果第一列是列名称,你应该输入1。
点击Advanced(高级),给每列选择正确的数据类型,确定。
点击Columns(列),给每列起个名字。
在我们的数据中,都是基本的设备、日期、温度、湿度、气压等等。
但某些记录是错误的(譬如没有日期),这些记录就要忽略,日期是细分为:
年、月、日、小时、分钟的,必须合并,还有温度、湿度某些情况是没有的,你就要处理为NULL。
对于错误的记录(日期为空),我们要添加一个ConditionalSplit,在Condition(条件)中输入“LEN(TRIM(Year))>0”(只需要判断年是否为空)。
关于表达式,需要特别说明一下:
你可以选作左边的变量或者列,或者右边的各种内置函数。
你只需要直接拖放变量、列或者函数到输入框便可。
对于完整的日期,我们需要添加一个DerivedColumn(派生列),从ConditionalSplit拖放关系,要求你选择跳转到指定流程的条件。
双击该派生列,在Expression(表达式)中输入“Year+"-"+Month+"-"+Day+""+Hour+":
"+Minute+":
00"”(构造标准的日期格式,如:
2010-06-2916:
11),日期类型选databasetimestamp(根据你自己的实际情况吧)。
对于NULL数值类型,你也需要添加一个派生列,然后在表达式中输入LEN(TRIM(Temperature))>0?
(DT_R8)Temperature:
NULL(DT_R8)。
这里用DT_R8是因为温度是double。
然后添加一个导入目标,我们的目的是把数据导入到MSSQLServer,所以添加一个SQLServerDestination,双击进入编辑
点击New新建一个数据库连接。
点击Mapping(映射),把CSV文件的列对应到数据库表
接下来就是运行了,如果你正确设置,数据自然会导入到数据库。