sql – 使用逗号分隔符将单列数据拆分为SSIS中的多个列

我在sql Server中有一个包含3列的表,其中一列是包含由逗号分隔的连续列行的数据列.第一行也是我想要创建的新表的标题行.所以基本上我想转此.
Data      | ID | Source 
====================
a,b,c,d,e | 1  | a.csv

f,g,h,i,j | 2  | b.csv

a | b | c | d | e
=================
f | g | h | i | j

使用SSIS,我能想到的唯一方法是使用转储到数据列的文本文件中,然后将其作为平面文件源重新读取,但我宁愿避免创建额外的不必要的文件

编辑:对不起我使用SSIS 2008

解决方法

你可以做的是按原样读取文件.
并在脚本任务中拆分这些值.

所以从源代码转到脚本任务.
然后在脚本任务作为输入列,选择包含这些值的列(InputColumn1).然后指定输出列(如果我是对的,我看到你有5,所以指定5(OutputColumn1-5)).

完成后,转到脚本本身(C#).

下:

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
}

将以下代码放在那里:

var ColumnValue = Row.InputColumn1.Split(',');

Row.OutputColumn1 = ColumnValue[0];
Row.OutputColumn2 = ColumnValue[1];
Row.OutputColumn3 = ColumnValue[2];
Row.OutputColumn4 = ColumnValue[3];
Row.OutputColumn5 = ColumnValue[4];

在脚本任务之后,Source和OutputCoulmns1-5中的所有列都可用,您可以执行所需的操作.

OUTPUT

Data      | ID | Source |OutputColumn1 |OutputColumn2|  etc. 3-5
 ================================================================
 a,e | 1  | a.csv  |  a           |  b

 f,j | 2  | b.csv  |  f           |  g

请问是否有问题.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...