我的問題如下。我有一個CSV文件(〜100K行)同列的格式containting歷史信息:SSIS,將一行分成多行
ID1,History1,ID2,歷史2 ... ID110,History110
每行可以在任何地方介於0和110歷史條目。每個單獨的條目都需要調用一個存儲過程。
如果每行有少量可能的條目,我想要做到這一點的方法是使用腳本來轉換數據,並將其發送到唯一路徑。創建110個路徑可能會起作用,但不是很優雅(而且相當耗時)。
最好的方法是什麼?
我的問題如下。我有一個CSV文件(〜100K行)同列的格式containting歷史信息:SSIS,將一行分成多行
ID1,History1,ID2,歷史2 ... ID110,History110
每行可以在任何地方介於0和110歷史條目。每個單獨的條目都需要調用一個存儲過程。
如果每行有少量可能的條目,我想要做到這一點的方法是使用腳本來轉換數據,並將其發送到唯一路徑。創建110個路徑可能會起作用,但不是很優雅(而且相當耗時)。
最好的方法是什麼?
只需將數據(原始csv不變,每個文件行一行)加載到臨時表中。然後,調用一個存儲過程,該過程將使用字符串拆分器分解並遍歷登臺錶行,併爲每個歷史記錄條目調用其他過程。
看到:Arrays and Lists in SQL Server 2005 and Beyond
也看到前面的回答:SQL comma delimted column => to rows then sum totals?
如果你想在SSIS解決這個沒有臨時表,你可以創建一個目的地腳本組件。您可以使用switch語句或散列表查找要執行的數據行的正確sproc。
目前還不清楚這是否是一種更好的解決方案,然後是上面的臨時表方法;但它是一種選擇。
我知道你已經接受了一個答案,但難道你不能使用Unpivot任務來實現你想在這裏做的事嗎?
你的問題並不完全清楚,但我想你是暗示那些SP的輸出需要存儲在路徑中? 這確實取決於所需的輸出。有了這麼多的投入,每個投入都需要自己的東西,無論如何,這個解決方案將按照人類的標準來看是龐大的。 – Tobiasopdenbrouw 2010-07-30 11:28:45