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