日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SSIS 学习(2):数据流任务(上)

發布時間:2023/12/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SSIS 学习(2):数据流任务(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?? ? 數據流任務是SSIS中的一個核心任務,估計大多數ETL包中,都離不開數據流任務。所以我們也從數據流任務學起。

  數據流任務包括三種不同類型的數據流組件:源、轉換、目標。其中:

  源:它是指一組數據存儲體,包括關系數據庫的表、視圖;文件(平面文件、Excel 文件、Xml 文件等);系統內存中的數據集等。

  轉換:這是數據流任務的核心組件,如果說數據流任務是ETL的核心,那么數據流任務中的轉換,則是ETL核心中的核心了。它包含非常豐富的數據轉換組件,比如數據更新、聚合、合并、分發、排序、查找等。可以說SQL語句中有的功能,它都基本上運用起來了。

  目標:與“源”相對應,也是一組數據存儲體。包含表、視圖;文件;多維數據集、內存記錄集等。

?  除以上三類組件外,還有一種組件,那就是”流(Flow)“,它形象地顯示了數據從”源“,經過”轉換“,最后到達”目的“地的一組路徑。我們可以利用”流“,來查看數據,添加備注說明等。

  下面一幅圖,就充分展示了源、轉換、目的、流的關系。

?

  下面我們以將IIS Log 導入數據庫為例,來介紹如何進行數據流任務開發。

  在開發之前,我們先來看看IISlog 的結構,如圖:

  它基本上記錄了網頁瀏覽的所有信息,如日期、時間、客戶IP、服務器IP、頁面地址、頁面參數等很多信息,我們再根據這些信息,在關系型數據庫中,建立一張對應表,來記錄這些信息。?

代碼 CREATE?TABLE?[dbo].[IisLog](
????
[c_Date]?[datetime]?NULL,
????
[c_Time]?[varchar](10)?NULL,
????
[c_Ip]?[varchar](20)?NULL,
????
[cs_Username]?[varchar](20)?NULL,
????
[s_Ip]?[varchar](20)?NULL,
????s_ComputerName?
varchar(30)?null,
????
[s_Port]?[varchar](10)?NULL,
????
[cs_Method]?[varchar](10)?NULL,
????
[cs_Uri_Stem]?[varchar](500)?NULL,
????
[cs_Uri_Query]?[varchar](500)?NULL,
????
[sc_Status]?[varchar](20)?NULL,
????sc_SubStatus?
varchar(20)?null,
????sc_Win32_Status?
varchar(20)?null,
????sc_Bytes?
int?null,
????cs_Bytes?
int?null,
????time_Taken?
varchar(10)?null,
????cs_Version?
varchar(20)?null,
????cs_Host?
varchar(20)?null,
????
[cs_User_Agent]?[varchar](500)?NULL,
????
[cs_Refere]?[varchar](500)?NULL
)?
ON?[PRIMARY]

?

  萬事俱備,下面我們就可以開始ETL的開發之旅了,打開Visual Studio 2008 工具,[文件]-->[新建]-->[項目],選擇“Integration Services 項目”,ETL 的開發界面就躍入眼簾,這是從事.Net 開發的朋友們非常熟悉的界面。打開左邊“工具箱”,將“數據流任務”拖到主窗口“控制流面板”,如圖所示:

  

  然后雙擊“控制流”面板上的“數據流任務”,進入“數據流”面板,這兩部分UI沒有什么差異,只是所實現的功能不同罷了。真正的數據流任務開發,從現在才算開始。

打開左邊“工具箱”,可以看到有三大部分:數據流源、數據流轉換、數據流目標。我們從“數據流源”中,將“平面文件源”拖到主窗口下,雙擊打開“平面文件源”編輯器,點擊“新建”,打開平面文件連接管理編輯器,如圖:  ?

?

  輸入連接名稱,選擇IisLog 文件,選擇行分隔符、列分隔符,就可以從預覽窗口看到數據的真面目了。

  這里有一點要注意,不同的平面文件,其行分隔符、列分隔符都是不一樣的,如果選不正確,將達不到你想要的效果,所有的數據都可能擠到一列中去了。一般行分隔比較簡單,基本上都是以回車換行({CR}{LF})來分隔;列分隔符卻不一樣了,它既可以以任意文本字符來分隔,比如逗號(,)、分號(;)、冒號(:)tab符、豎線(|),以及常用的文字字符、數字字符,也可以定義每一列的固定寬度來分隔。這就需要視文件源不一樣,分別對待了。

  在平面文件連接管理器中,選擇“高級”,還可以定義每一列的列名、數據類型、字符長度等信息。 等一切定義完成,點擊確定,返回到平面文件編輯器界面,前面建立的連接將自動返回到“平面文件連接管理器”的下拉列表框中,下面就要以選擇需要輸出的列了,如圖:

 ? 

??? 然后再選擇“錯誤輸出”,缺省選項如下圖所示:

?? ? ?這一選項非常重要,是要求我們配置當源數據發生錯誤的時候該如何處理,一般源數據發生錯誤有兩種情況:一是數據類型錯誤,比如日期格式錯誤、數字變字符了等;另一情況就是字符太長,超出列寬了。根據不同的情況,其處理方式也不一樣,系統提供了三種解決辦法:

  忽略失敗:是指如果某一行數據錯誤,忽略此行,不影響程序執行,繼續導入其它數據。

  重定向行:將錯誤的數據行,導入到另外一個數據流目標,供以后人工檢查后,再重新處理。

  組件失敗:這是最嚴格的,只要遇到數據錯誤,組件立即失敗,停止運行。

  就IISLOg 這樣的數據源文件來說,有錯誤數據行,那是是經常發生,但是這些少量數據錯誤,也不會影響最終的結果,我們就要以考慮容錯性為主了,放寬對數據質量的要求,一般選擇“忽略錯誤”,以方便程序繼續運行。

???? 一切都定義完后,我們看到“平面文件源”控件上,還有一個紅色的叉(X),那是指沒有為此數據源定義目標,那就是下一步要定義的。另外下面還有兩個長線箭頭,一個綠色,一外紅色,其中綠色:表示正確數據流通路,紅色表示錯誤數據流通路,如果前面定義錯誤“重定向行”,那么錯誤數據將沿著紅色路徑,流向錯誤數據存放地。

  定義數據源目標,這可能要簡單一些了,同理從左邊"工具箱"中,看到有很多種類型的數據源目標,我們選擇“OLE DB 目標”,將“平面文件源”控件下的綠色箭頭連接到“OLE DB 目標”,然后雙擊,打開“OLE DB 目標編輯器”窗口,“新建”數據庫連接,如圖:

?

返回到“OLE DB 目標編輯器”窗口,在數據訪問模式下,選擇“表或者視圖--快速加載”一項,然后再選擇對應的表,如圖:

下面配置列映射,如圖:

如果沒有的列,直接忽略即可(前提是表中該列允許為空),后面仍然是配置錯誤處理方式,參照平面文件源錯誤處理方式即可。

  到此為止,一個簡單的數據流任務就基本上完成了,點擊運行,我們期待已久的結果出現了。

?

?當然,在實際開發過程中,可能并沒有這么順利,會遇到很多各種各樣的問題,在這篇文章中我們很少提及,主要是因為這僅是個開始,沒有涉及到這么深入,在以后的專題中,會逐漸講解。

   一個簡單的數據源任務就算完成了,其實這只是一個Demo ,讓大家了解了一個概況,可以說萬里長城只是走出了第一步,真正的ETL不會這么簡單。下后面我們將介紹ETL最精彩的部分“數據流轉換”,敬請期待。

轉載于:https://www.cnblogs.com/invinboy/archive/2009/12/16/1619809.html

總結

以上是生活随笔為你收集整理的SSIS 学习(2):数据流任务(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。