通过 SSIS 导入带有不规则标题行的文本文件
Posted
技术标签:
【中文标题】通过 SSIS 导入带有不规则标题行的文本文件【英文标题】:Import Text File with irregular header lines through SSIS 【发布时间】:2012-11-01 15:34:02 【问题描述】:我有一个如下所示的文件;请帮助如何通过 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】:假设您的文件具有固定数量的标题行,那么以下应该可以工作;
将源的读取分成两个单独的数据流。第一个用于传递标头;第二个细节。
在第一个流中,将文件视为冒号分隔。添加源(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 控件以将多行(每个参数一个)切换到多列。输入“名称”作为枢轴键,“键”作为设置键,“值”作为枢轴值。在“从输出值生成数据透视表列”部分中,为每个标题名称输入一个值,即 [BSS 版本]、[BSC 名称]、[...] 这将产生一个包含所有标题值作为列的单行。然后,您可以将其与您的详细数据结合起来,或单独存储。
在详细信息源中将连接设置为通过 x 跳过标题行以绕过标题信息。像对待没有标题信息的文件一样对待。使用派生列组件将文件名等变量添加到行中。
【讨论】:
感谢您的想法。但是您能否详细解释一下如何执行这两个步骤,因为我是 SSIS 的新手。我的意思是您能告诉我要编写什么脚本来获取三个字段“名称标题行中的 BSC“测量开始时间”和“测量结束时间”。以及如何执行第二步,以便将第一步中的列添加到第二个表中。非常感谢您的指导。谢谢 在被卡住之前你能走多远?如果您还没有开始,请从详细数据开始。创建一个新文件(减去标题信息)。添加具有源/目标的数据流任务以从新文件中读取/存储数据。完成后,在文件顶部添加几行空白行,看看是否可以发现绕过 x 行选项。同时,我将尝试为标题部分找到一个示例并添加一个链接到我的答案。以上是关于通过 SSIS 导入带有不规则标题行的文本文件的主要内容,如果未能解决你的问题,请参考以下文章
将文本文件导入 SSIS 中的 SQL Server 表的数据流如何工作?
sql 2008的SSIS应用方法: 将多个一定格式的文本文件批量导入到数据库
将超过 255 个字符从 excel 导入到 sql server(上一个问题 - 如何使用 ssis 将文本限定 CSV 动态加载到 sql server)