我的问题如下。我有一个CSV文件(~100k行)包含列格式为的历史信息:
ID1,History1,ID2,...历史2 ID110,History110
每行可以包含0到110个历史条目之间的任何位置。每个单独的条目都需要调用存储过程。
如果每行有少量可能的条目,我想这样做的方法是使用脚本转换数据,并将其发送到一个唯一的路径。创建110条路径可能会有效,但不是很优雅(而且非常耗时)。
最好的方法是什么?
答案 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任务来实现你想要做的事情吗?