关于SSIS处理csv文件
以下内容转自:http://blog.sina.com.cn/s/blog_620e630f0100vaen.html
?
在SSIS中处理平面文件的时候需要一个Flat File Source的组件,我们可以在SSIS Connection manager for Flat Files进行定义。这里的Flat File可以是txt,csv,xls等格式的文件。下面就以一个实际的例子给大家说明。
Example:?????????注意看下面:
值Header row delimiter:说明
Delimited
??????????????? 各列之间由在“列”页上指定的分隔符隔开。
Fixed width
??????????????? 列的宽度固定。
Ragged right
??????????????? 在右边未对齐的文件中,除最后一列之外的每一列的宽度都固定。它由行分隔符分隔。
Header rows to skip:? 指定要跳过的标题行数或初始数据行数(如果有的话) Column names in the first data row: 指示在第一个数据行中是否要求列名或提供列名?
值说明{CR}{LF}
标题行由回车符和换行符的组合分隔。
{CR}
标题行由回车符分隔。
{LF}
标题行由换行符分隔。
Semicolon?{;}
标题行由分号分隔。
Colon{:}
标题行由冒号分隔。
Comma?{,}
标题行由逗号分隔。
Tab{t}
标题行由制表符分隔。
VerticalBar{|}
标题行由竖线分隔。
在进行了一些设置后,我们看到的例子:
实际上我们需要得到的数据应该是这样的:
Date????????????????????????????????????????????Most Popular Site Sections???????????????????????????????????????????????? Page Views
Feb 1?2009????????????????????????????????? hotel serch results??????????????????????????????????????????????????????????????? 520417
分析:
- CSV逗号分隔值文件(Comma Separated value),是一种用来存储数据的纯文本文件格式,通常用于电子表格或数据库软件。源文件中的数据??? Feb 1,2009???????????????????????? hotel search results???????????? 520,417Page Views 一列的数据是科学计数,而且逢科学计数就有{"}出现
怎样解决这个难题,最初想到的办法是借助临时表,于是就有了对于csv文件中{,}和{"}的处理这篇文章。后来查阅了很多资料,如下有很多对csv文件处理的文章都有不错的借鉴之处。
- SSIS CSV(1)SSIS CSV(2)
这样的方法都是先把源数据导入一列然后对这个列进行操作,还不是很理想。最后客户建议了一下,觉得这样的方法太棒了。其实我们在处理数据的时候忽视了Text Qualifier属性
Text Qualifier: 指定要使用的文本限定符。例如,可以指定文本字段必须用引号括起来。OK.这样问题就迎刃而解了。????????????
?
请注意上面红色标识的部分。
处理后的文件如下:
这样数据就和我们期望的很接近了,接下来的事情就可以借助Derived Column这个组件来处理,然后倒入目的表就OK. 关于怎样使用Derived Column处理的例子请等待.