close

這次來介紹一個非常簡單的ssis轉檔,也就是做單純的匯入匯出動作,要怎麼做呢?

首先先拉出一個資料流程工作..

image_thumb[7]

然後點選"資料流程工作",按右鍵,選"編輯"之後,會切換到如下頁面,再拉出二個控制項,如下

image_thumb[3]

在"Ole db來源"上按右鍵"編輯",之後可以看到如下畫面,資料存取模式的地方有

  1. 資料表或檢視表-->顧名思義,就是指直接選取資料表或View的意思
  2. 資料表名或檢視表名稱變數:-->指的是若你有自訂ssis的變數,而該變數中所存的是table name或View name的話,再選擇後,可以再另選變數名稱,當作被查詢table name
  3. sql命令:-->可以直接下sql語法,各家的sql語法都不相同,但若要在sql中包含where條件的變數值的話,則只支援sql server
  4. 來自變數的sql命令:-->可以把他想成是自己組動態的sql語法後,放在一個變數中,然後當作查詢的語法

 image_thumb[1]

接下來在畫面的右方選擇"資料行",若有看到如下圖的,則表示選擇是成功的..,這裡可以讓你選擇要輸出的欄位是哪些,若是不需要的欄位,也可以在此做取消選取的動作,設定完成之後,按"確定"

image_thumb[9]

接下來把"oledb來源"的綠色線拉到"oledb目的地"

image_thumb[10]

針對oledb目的地,按滑鼠右鍵,選編輯,若是目的地的table 還沒有建起來,也可以使用如下方紅框的部份,有個"新增"的按鈕,新增一個目的地的table,若是已經建好的,也可以使用下拉選單來選擇,在畫面中有個下拉選擇為"資料存取模式",預設為"資料表或檢視表-快速載入",這個會讓ssis在run time的時候,以buck insert的方式快速的將資料新增的目的地中,但沒有辦法解決資料key重覆的問題...

若要解決,要選擇一種模式-"資料表或檢視表",這樣就可以抓到說在新增的過程中,是那一筆有發生key重覆而塞不到目的地table了,但這也不是全然是好的,因為這樣就沒有辦法快速大量新增了,因為為了要抓出,是那一筆資料造成資料key重覆,所以就會一筆一筆塞..當遇到資料量大的時候,例如幾百萬筆的資料,就會慢到不行囉..

解決方法很多種,例如,先在轉檔的過程中,想辦法濾掉,不然就是在資料來源的地方就要濾好...等

當要使用資料存取模式為-"資料表或檢視表",希望是你在用debug的時候用到即可,一但抓到問題,解決後,還是建議使用"資料表或檢視表-快速載入"

image_thumb[13]

在這裡,我選擇"新增" 資料表的方式,建一個與來源相同的名稱,只是多個2,例如我所選的是author2,他預設會以資料來源的create table的方式預設為script,你可以自行修改,記得要設pk欄位哦,若在此不會設,就自己到sql server管理介面去到設定吧..,若要匯到目的地是不需要建key的話,當然也就不用設囉..

image_thumb[15]

之後點選"對應",看到如下圖所示,代表資料來源與目的地都有對應了,若有對應是不對的,也可以在下方中做對應,設定完成後,按"確定"

image_thumb[18]

以下為完成圖,都沒有問題的話,則oledb及oledb目的地的控制項中,皆不會出現紅色的"X"

image_thumb[19]

以下為執行結果,會列出轉出幾筆資料過去..

image_thumb[20]

這樣就完成了最簡單的資料轉換囉...

arrow
arrow
    全站熱搜

    丫德 發表在 痞客邦 留言(1) 人氣()