SSIS,将单行拆分为多行

时间:2010-07-30 11:20:48

标签: sql-server ssis

我的问题如下。我有一个CSV文件(~100k行)包含列格式为的历史信息:

ID1,History1,ID2,...历史2 ID110,History110

每行可以包含0到110个历史条目之间的任何位置。每个单独的条目都需要调用存储过程。

如果每行有少量可能的条目,我想这样做的方法是使用脚本转换数据,并将其发送到一个唯一的路径。创建110条路径可能会有效,但不是很优雅(而且非常耗时)。

最好的方法是什么?

3 个答案:

答案 0 :(得分:0)

只需将数据(原始csv不变,每个文件行一行)加载到临时表中。然后,调用将使用字符串拆分器的存储过程拆分并遍历登台表行,并为每个历史记录条目调用其他过程。

请参阅:Arrays and Lists in SQL Server 2005 and Beyond

另见前一个答案:SQL comma delimted column => to rows then sum totals?

答案 1 :(得分:0)

如果要在没有登台表的SSIS中解决此问题,可以创建目标脚本组件。您可以使用switch语句或哈希表来查找要为数据行执行的正确的sproc。

目前尚不清楚这是否比上面的临时表方法更好;但它是另一种选择。

答案 2 :(得分:0)

我知道你已经接受了答案,但你不能使用Unpivot任务来实现你想要做的事情吗?