之前有介紹過一篇文章叫做超Easy的簡單轉檔,裡面我有留了一個伏筆,就是在轉檔的過程中,若要抓出pk重覆的資料時,要用另一種做法,這次我就來介紹一下,要怎麼設定呢?
以下為我們預先假設的資料,以Sql server為測試資料庫,我假設我要轉檔的來源資料為如下畫面,紅框的地方為資料重覆的部份,我假設id這個欄位為key,這只是個Sample Test,所以資料我用少一點,比較方便看,在實際的轉檔中,將有可能會遇到上百萬筆的資料,有些時候用T-sql語法抓不出來時,也可以用這樣的方式抓出問題,只是轉檔的時間會變的比較耗時..先在此說明
如果照一般設定去轉換時,將會發生錯誤,下圖目的地為一般設定,我在test2這個table,故意把欄位開的跟來源資料表一樣的欄位,並設id為key欄
執行後結果如下
這個時候,我們就可以將目的地的設定稍微改一下,就可以抓出到底是那些資料造成轉檔時的錯誤了,資料存取模式改為"資料表或檢視表",當然如果你是用變的話的,也可以指定成"資料表名稱或檢視表名稱變數",就是不要選擇模式名稱後面有"快速載入"的這些項目即可
接下來選擇"錯誤輸出" ,這個頁籤,之後再選擇下拉選單中的"重新導向資料列"
接下來新增一個物件變數,用來承接當有錯誤時的目的地,變數的類型設定為object的話,可以想像他就是拿來放物件的,例如DataSet,RecordSet之類的東東,因為可以放多筆的資料在裡面哦
接下來從資料流程目的地中拉出資料錄集目的地
將ole db 目的地的紅線,拉到資料錄集目的地控制項中
對"資料錄集目的地"按滑鼠右鍵選編輯,選擇我們之前設定的變數名稱
再來切換到輸入資料行的頁籤,這裡你可以勾選全選,或自己選擇你自己想要看的欄位,然後按確定即可
接下來,要怎麼監看呢?還要再紅色的線上按滑鼠右鍵,選編輯之後設定一下,照下圖設定即可
好了,到目前為止,大功告成,接下來讓我們執行看看吧
在下圖中,黃色的元件,代表正在執行中,綠色表示執行成功的!,在畫面中會看到紅圈的部份為表示,你要在runtime的時候監看flow內的資料,橘圈的部份表示按下後將繼續執行,也就是說你可在這個監看視窗中,看得造成資料key重覆的是那些資料,然後可以將這些錯誤的資料複製到excel或notepad中留存,以便處理資料來源的異常資料囉
若按下橘圈的啟動後,轉檔將會順利完成,如下圖,總共有7筆資料,發生錯誤一筆,也將是匯入成功6筆,這樣目的地的資料就有匯進去囉!
以上的講解不知是看的懂呢?若有更好的解決方法,歡迎留言指正哦,以上僅是我個人在實務上所想到的解決方式,當然一定會有人有更好的解決,期待一同交流與學習...
留言列表