簡體   English   中英

SSIS-遍歷列

[英]SSIS - Loop through columns

一段時間以來,我們一直在使用excel文件存儲購買數據。 該電子表格文件具有統一的結構。 因為它具有很多屬性,所以我只想列舉最重要的屬性。

在此Excel文件中,我們具有產品ID列,每種產品的尺寸以及每種產品ID和尺寸的組合的數量。

問題是,我們有幾家商店,每個商店每種產品收到不同數量的商品。 因此,在每個excel中,我們為每個商店都有一列,其中放置了從每個組合中訂購的數量。

在此處輸入圖片說明

因此,我想做的是遍歷每個商店的列,以將每種組合的相應數量添加到特定商店。

例如,

INSERT INTO MyTable (product_ID, size_ID, store_ID, quantity)
    VALUES (12345, 34, Mirkwood, 1)

然后,對每列重復一次。

我一直在嘗試為此找到解決方案,但還沒有弄清楚。 我真的很感謝所有幫助或提示。

避免嘗試在SSIS中創建一些復雜的,動態的循環代碼。

拆分流會更簡單,因此您擁有一個商店的product_idsize_id和數據。 使用您已經知道的store_id對每個商店執行插入操作。

雖然循環解決方案聽起來不錯,並且可能意味着添加新商店時不必更新代碼,但是在SSIS中,實現起來很復雜,我猜您不是在頻繁添加商店來創建新商店。努力值得。

您可以使用unpivot組件

選中的列將是您需要轉換為行的列。 目標列是將數據放入其中的列。數據透視鍵值列名稱:數據透視表列的名稱。

在此處輸入圖片說明

在此處輸入圖片說明

之后,您可以正常插入行。

另一種方法是使用sql,我在這里使用的是t-sql,但其他數據庫也應該有類似的東西。 首先將原始數據導入表中。 然后使用unpivot執行與上述類似的操作。

    CREATE TABLE #pvt (VendorID int, Emp1 int, Emp2 int,
        Emp3 int, Emp4 int, Emp5 int);
    GO
    INSERT INTO #pvt VALUES (1,4,3,5,4,4);
    INSERT INTO #pvt VALUES (2,4,1,5,5,5);
    INSERT INTO #pvt VALUES (3,4,3,5,4,4);
    INSERT INTO #pvt VALUES (4,4,2,5,5,4);
    INSERT INTO #pvt VALUES (5,5,1,5,5,5);
    GO

    select * from #pvt

    --Unpivot the table.
    SELECT VendorID, Employee, Orders – destination table, first column is row group?
    FROM 
       (SELECT VendorID, Emp1, Emp2, Emp3, Emp4, Emp5
       FROM #pvt) p – detail source
    UNPIVOT
       (Orders FOR Employee IN –orders: data, For: column group
          (Emp1, Emp2, Emp3, Emp4, Emp5)
    )AS unpvt;

這種方法的唯一問題是,如果添加了更多的列(存儲),它將無法處理。 但您可以使其動態化: https : //www.mssqltips.com/sqlservertip/3002/use-sql-servers-unpivot-operator-to-dynamically-normalize-output/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM