SSIS-如何拆分行(而不是列)

SSIS-如何拆分行(而不是列),ssis,Ssis,我有一个100行20列的文件,前两行是文本,其余98行是数字。没有标题-我需要合并第1行和第2行才能获得标题 我想将第1行拆分为一个输出,将第2行拆分为另一个输出,然后将第1行和第2行的col1合并,将第1行和第2行的col2合并,将第1行和第2行的col3合并,等等,以便为所有20列创建新的标题。合并后,我将使用union all写入一个新的输出文件,该文件现在将有99行:第1行是带有新标题的文本,其余99行是数字 SSIS允许我这么做吗?我知道它可以对列值进行条件拆分,但有没有一种方法可以基

我有一个100行20列的文件,前两行是文本,其余98行是数字。没有标题-我需要合并第1行和第2行才能获得标题

我想将第1行拆分为一个输出,将第2行拆分为另一个输出,然后将第1行和第2行的col1合并,将第1行和第2行的col2合并,将第1行和第2行的col3合并,等等,以便为所有20列创建新的标题。合并后,我将使用union all写入一个新的输出文件,该文件现在将有99行:第1行是带有新标题的文本,其余99行是数字

SSIS允许我这么做吗?我知道它可以对列值进行条件拆分,但有没有一种方法可以基于行或行号拆分值?条件拆分可以处理行吗


thx

我可以想出两种解决方案

创建类型为Source的脚本组件以读取文件,这样可以在读取行输出时控制行输出。这就消除了连接管理器/平面文件组件的使用/优点,因此我不建议将其作为首选

您创建了一个类型转换的短脚本组件,并假设读取是正确的行顺序,只需更改前几行即可

对于2,这就是它的外观您可以过滤掉行索引0: 在脚本组件中,确保以下设置正在创建输出列“RowIndex”,并将输入列标记为“ReadWrite”:

设置完成后,脚本只需如下所示:

公共类ScriptMain:UserComponent { 公共静态int RowCount=0; 公共覆盖无效Input0\u进程InputRowInput0Buffer行 { 如果RowCount==0 { //存储您所在行的信息 string Column0=Row.Column0; 字符串Column1=Row.Column1; //设置索引0,并使其获取下一行 Row.RowIndex=RowCount++; Row.NextRow; //将下一行作为第二行,合并列。 Row.Column0=Column0++Row.Column0; Row.Column1=Column1++Row.Column1; } //为下面的每一行递增并存储。 Row.RowIndex=RowCount++; } }
希望这会有所帮助。

您希望如何将这两行合并为标题?连接它们?前两行中的值是否每次都会更改?是否有一个列可以将行1和行2标识为两个单独的行?是否有某种原因,它不像添加一个rownumber列那样简单,因此可以在条件拆分中使用它?可能的答案是否,除非你展示一些样本数据,证明我的假设是错误的,否则没有什么真正本地的东西可以让你这么做。对于这种情况,我发现最好的方法是将平面文件连接管理器设置为跳过前两行,然后没有标题。在数据流之前的脚本任务中,我会将前两行解析为SSIS作用域变量或写入输出文件。数据流目的地将被设置为追加而不是覆盖,因此它只会写入实际的数据编号感谢您的所有回答。是的,我想连接两个标题行,标题行是一致的,不会改变。我没有行标识符,但我可以添加代码来创建行号列。它是否像添加一个行号然后只使用条件拆分一样简单?对于默菲定律的建议,那太好了,我试试看。