SSIS:数据转换将行分隔为字段

时间:2010-12-01 18:52:18

标签: sql-server dts ssis

我有一个包含相关数据行的表,我需要在SSIS包中进行转换,我不知道如何去做。

在此表中,彼此相关的行由包含管道字符的行分隔,例如。

测试线1_1
测试线1_2
测试线1_3
|
测试线2_1
测试线2_2
测试线2_3
|
测试线3_1
测试线3_2
测试线3_3

等..

我需要将它移动到一个表中,并将每组行的行连接成一个由管道分隔符分隔的行。所以从上面的例子我需要在另一个表中结束:

测试线1_1测试线1_2测试线1_3
测试线2_1测试线2_2测试线2_3
测试线3_1测试线3_2测试线3_3

我不知道该怎么做。我考虑导出到一个文本文件,然后使用管道分隔符重新导入 - 这将工作,但我将处理数百万行,所以我宁愿避免这种开销,必须有一种方法在SSIS,但目前我不确定如何。

非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

您可以创建使用Source组件的数据流任务。源将使用SQL语句检索数据。

然后,添加一个脚本组件作为转换。必须将脚本组件设置为异步。选择Script组件的Inputs and Outputs选项卡,然后选择Output 0.将SynchronousInputID设置为None。这将允许组件输出与输入行数不同的行数。在“输出列”分支下添加一个新列。

在脚本组件中,您可以根据需要连接数据。默认情况下,输入缓冲区为Row,输出缓冲区为Output0Buffer。您可以使用Row.NextRow()来获取下一个输入行,使用Output0Buffer.AddRow()来添加新的输出行。

根据您的示例数据,您可以将输入数据添加到输出缓冲区,直到“|”出现。或者,如果符合您的数据,您可以使用计数器。