通过SSIS导入带有不规则标题行的文本文件

时间:2012-11-13 07:10:44

标签: sql-server ssis flat-file

我有一个如下所示的文件;请帮助如何通过SSIS导入它。问题是如何跳过起始行,因为文件的其余部分已将所有列选项卡分开。我还需要来自标题行的一些信息,如BSC的名称将用作另一列。

BSS release :   11                      
Name of BSC :   E344_JUB4                       
Type of measurement :   RT110_CELL/TRX related overview counters        
Measurement begin date and time :   5/21/2012 7:00      
Measurement end date and time   :   5/21/2012 8:00              
Input file name :   /alcatel/var/share/AFTR/APME/BSC/PMRES110.30A.16.E344_JUB4.2012-021.05:00:29.35.259                             
Output file name    :   /alcatel/var/share/AFTR/APME/OBSYNT/E344_JUB4/20120521/R11000008.142            
BTS_INDEX   BTS_SECTOR  CELL_NAME   CELL_CI CELL_LAC    BSC_MCC BSC_MNC MC01    MC02    MC02A   MC02B   MC02C   MC02D   MC02E   MC02F   MC02G   MC02H   MC02I   MC03    MC04    MC07    MC10    MC101   MC1040
1   1   JUB3227_4   32274   3719    420 F03 246 597 264 23  37  1   0   0   30  242 0   0   0   0   0   0   0
1   2   JUB3227_5   32275   3719    420 F03 331 6508    6118    25  51  3   0   0   40  271 0   0   0   0   0   0   0
1   3   JUB3227_6   32276   3719    420 F03 156 640 294 75  40  2   0   0   24  205 0   0   0   0   0   0   0
10  1   JUB3227_1   32271   3719    420 F03 151 1821    1584    17  36  3   0   0   8   173 0   0   0   0   0   0   0

1 个答案:

答案 0 :(得分:0)

假设您的文件具有固定数量的标题行,则以下内容应该有效;

将源的读取分成两个单独的数据流。第一个传递标题;细节的第二个。

在第一个流中,将文件视为冒号分隔。添加源(Excel?)控件,将数据访问模式更改为“SQL命令模式”。添加一个SQL语句,如SELECT top 2 f1 FROM [Sheet1 $]。这将从第一个工作表中选择前2行并仅返回f1列。您需要调整文件,以覆盖所需的标题行数。

添加派生列以将Name:Value对拆分为两个。创建3个新的派生列   - First =“Name”,表达式为LEFT(f1,FINDSTRING(f1,“:”,1) - 1)   - Second =“Value”,表达式为RIGHT(f1,LEN(f1) - FINDSTRING(f1,“:”,1) - 1)   - 第三个=表达式1的“关键”

添加Pivot控件以将许多行(每个参数一个)切换为多个列。输入“Name”作为Pivot Key,“Key”作为Set Key,“Value”作为Pivot Value。在“输出值”部分的“生成数据透视表列”中,输入每个标题名称的值,即[BSS版本],[BSC名称],[...]这将生成一行,其中所有标题值都作为列。然后,您可以将其与详细数据结合使用,也可以单独存储。

在详细信息源中,将连接设置为跳过标题行x以绕过标题信息。像没有标题信息的文件一样对待。使用派生列组件将文件名等变量添加到行中。