Ssis

數據流轉換不會自動映射列

  • July 16, 2016

我正在創建一組 SSIS 2014 包(使用 Visual Studio 2013)從 50 個表中導入數據。由於大多數表都在同一列上進行過濾,並且我將所有列導入到暫存區域,因此我選擇了可重用設計,其中我的包名稱與表名稱匹配,我的 OLE DB 源查詢是用表達式定義的 -基於變數(以 開頭SELECT * FROM <tablename>...)和我的 OLE DB 目標表也使用基於表達式的變數(在本例中為 schema.tablename)定義。

源查詢和目標表都具有匹配的列名,並且在大多數情況下在數據類型和大小上匹配。

當我為每個表複製我的包時,我複制/粘貼一個先前創建的包並目視檢查映射以確認表達式和數據流映射對於新包名稱有效。我看到表達式按計劃工作,但我必須手動對目標編輯器中的大多數列進行拖放映射。

這是編輯器的預期行為,因為原始包的設計元數據在新包名稱下無效,有沒有辦法讓 Visual Studio 根據列名刪除並重新映射數據流中的所有列?

複製和粘貼 SSIS 包可能會導致一些問題。聽起來你有簡單的包——一個源到目的地的數據流。一般來說,那些沒有我遇到過的掛斷,但我見過人們對數據類型的定義不一致的情況。電子郵件 - varchar(40)、varchar(80)、varchar(120)、nvarchar(256) 都在同一個數據庫中,只是在不同的表中。可能發生的情況是您首先使用 80 大小建構您的包。當您複製/粘貼和修復源表時,當您轉到 40 表時,編輯器可能不會注意到數據大小的變化,因為它適合舊的大小。但我也看到了相反的情況——它可能不會增加尺寸。解析度並不可怕,只需將您的查詢更改為select 1 AS x,讓它設置元數據,然後將您的查詢修復回正確的選擇。

正如 Dave 所建議的,此任務非常適合入門級 Biml 任務。事實上,只要您不介意沒有明確的源查詢,我的Biml replicate-o-matic幾乎就是您所描述的。較早的版本在SO上,我正在連結到它以對沖連結腐爛。

如果你喜歡你的方法,你可以保持你的方法。但是,省去在目的地中點擊和拖動的時間,並用六次點擊來替換它:右三下,左三下。在您的映射選項卡中,右鍵點擊以顯示此上下文相關菜單

在此處輸入圖像描述

左鍵點擊“選擇所有映射”

右鍵點擊並左鍵點擊“刪除選定的映射”

右鍵點擊然後左鍵點擊“按匹配名稱映射項目”

引用自:https://dba.stackexchange.com/questions/116530