如何使用常用的6種方式對資料進行轉換(二)

weixin_33858249發表於2017-11-15
如何使用常用的6種方式對資料進行轉換(二)
 
實驗目標:
1、 使用T-SQL語句對資料進行轉換。
2、 使用備份和還原對資料進行轉換。
3、 使用分離和附加對資料進行轉換。
4、 使用複製對資料進行轉換。(重點講解)
5、 使用SSIS匯入和匯出嚮導對資料進行轉換。
6、 使用SSIS包設計器對資料進行轉換
 
 
實驗步驟:
注意:下面所有的操作都將對以下表格進行更改
clip_image002
 
4、 使用複製對資料進行轉換。
通過複製可以將資料的多個拷貝分發到公司中的各個伺服器中。通過複製為多臺伺服器提供相同的資料,這樣使用者就可以在不同伺服器中訪問同樣的資訊,對以一個擁有大量使用者的企業,複製可以分散使用者訪問伺服器的負載,從而為每個使用者提供更高質量的服務。
複製可以將資料和資料庫物件從一個資料庫複製和分發到另一個資料庫,然後在資料庫間進行同步,以維持一致性。使用複製,可以在區域網和廣域網、撥號連線、無線連線和Internet上將資料分發到不同位置以及分發給遠端或移動使用者。
釋出伺服器擁有原始資料的拷貝,通過訂閱,將資料送到分發伺服器,並且由分發伺服器傳遞給訂閱伺服器。
分發資料庫儲存複製狀態資料和有關釋出的資訊,並且在某些情況下為從釋出伺服器向訂閱伺服器移動的資料起著排隊的作用。在很多情況下,一個資料庫伺服器例項可以充當釋出伺服器和分發伺服器兩個角色。
訂閱伺服器擁有資料的拷貝,根據所選複製的型別,訂閱伺服器還可以將資料更改傳遞迴釋出伺服器或者將資料重新發布到其他訂閱伺服器。
 
實驗環境
在某一個公司裡的mysql資料庫中,有很多應用與銷售資訊記錄表(mytable表)相關聯,作為這家公司的資料庫管理員,為了避免衝突,需要將mysql表複製到一個不同的SQL Server例項上,原例項中的表用於資料更新,副本則用於查詢分析,並且需要時保持同步更新。
 
實施步驟:
1、 首先安裝兩臺SQL,如果都在工作組環境下,就用混合模式進行驗證,如果都在域環境下,就用windows域使用者賬戶進行驗證。本實驗是在工作組環境下,為了簡便起見都用SQL Server中的SA使用者進行驗證,實際中,最好不要這樣去做。如何啟用SA賬戶這裡就不做過多介紹了。
首選連線到其中一臺釋出伺服器上,然後選擇“新建釋出”就可以了,注意:釋出伺服器必須要開啟SQL Server Agent服務。其次,伺服器例項必須為本機計算機名稱。
clip_image001
 
選擇其中一個需要釋出的資料庫mysql。
clip_image003
 
釋出型別:
快照複製—這是最容易進行設定的複製方式,快照複製只需要週期性地傳送資料。當同步發生時,快照複製傳送所有資料。不需要去監視資料的修改,但這樣也可能引起資料流量的增加,如:當沒有資料修改時也會傳送所有的資料。
事務性複製—與快照複製不同,只要資料發生改變。事務性複製就將它們傳送給訂閱伺服器。這樣可以減少資料複製的流量。事務性複製通常從釋出資料庫物件和資料的快照開始,建立初始快照。當發生複製時,事務日誌被髮送到訂閱伺服器上,用以保證事務性的一致性。預設情況下,事務性發布的訂閱伺服器被視為只讀,因為更改將不會傳播回釋出伺服器。
合併複製—合併複製允許既可以在釋出伺服器上修改資料,也可以在訂閱伺服器上修改資料,當同步發生時,釋出伺服器的修改和訂閱伺服器的修改被合併在一起。在合併複製中,同一資料可能由釋出伺服器和多個訂閱伺服器進行了更新。因此在合併更新時可能會產生衝突,合併複製提供了多種處理衝突的方法。與事務複製相同,合併複製通常也是從釋出資料庫物件和資料的快照開始,當複製發生時,之後的更改被合併在一起。
為了滿足實驗背景需求,採用“事務性發布”。
clip_image005
 
選擇需要釋出的表,本實驗選用mytable,注意,選擇的表中必須要有主鍵才可以。
clip_image007
 
可以通過下面的“新增”選單對需要表中的有效資訊進行篩選,本實驗就不篩選了。
clip_image009clip_image011
 
指定連線釋出伺服器的賬戶,本實驗由於在工作組中,所以選用SQL Server內建賬戶。
clip_image013clip_image015
 
給該釋出伺服器命一個名稱。
clip_image017clip_image019
 
釋出建立成功之後,會在本地釋出子目錄裡顯示出釋出的資料庫。
clip_image020
 
通過本機連線到另一臺SQL Server資料庫例項上,通過本地訂閱,訂閱釋出的內容。也可以在另一他SQL Server資料庫上做。
clip_image022
 
選擇“釋出的伺服器”然後通過SA賬號連線到釋出伺服器上。訂閱自己需要的釋出內容(在實際環境中可能有多個釋出)。
clip_image024
 
在實際環境中釋出伺服器和分發伺服器一般放在同一個SQL server中,就選擇最上面那個就可以了。
clip_image026
 
新增訂閱伺服器到此列表中,並選擇需要訂閱的伺服器,然後選擇訂閱伺服器中的一個資料庫就可以了。
clip_image028
 
與分發伺服器的連線需用模擬程式賬號,這樣做不是很安全,如果是域環境就直接使用域使用者賬戶就可以了,與訂閱伺服器的連線,使用訂閱伺服器上的SQL 賬戶,這裡選用SA,實際中,決定不允許使用這個賬戶。
clip_image030clip_image032clip_image034clip_image036clip_image038
 
完成之後,可以在訂閱伺服器的mysql_dingyue資料庫中看到剛才訂閱的表。
clip_image040
 
為了測試方便,在釋出伺服器上修改資料庫mysql中的表mytable,將小諾同志的工資加1000,看訂閱伺服器是否發生變化。
clip_image041
 
使用SQL語句檢視訂閱伺服器資料庫mysql_dingyue的表mytable看小諾的工資是否發生變化。
clip_image043
 
如果測試不成功,可以通過“檢視同步狀態”進行堅持資料庫的狀態。
clip_image045clip_image047
 
5、 使用SSIS匯入和匯出嚮導對資料進行轉換。
匯入和匯出嚮導提出了一種從源向目標複製資料的最簡便的方法,可以在多種常用資料格式之間轉換資料,還可以建立目標資料庫和插入表。
可以向下列源中複製資料或從其中複製資料:SQL Server、文字檔案、Access、Excel、其他OLE DB訪問介面。
這些資料來源即可用作源,又可用作目標。還可將ADO.NET訪問介面用作源。指定源和目標後,便可選擇要匯入或匯出的資料。可以根據源和目標型別,設定不同的嚮導選項。例如,如果在SQL Server資料庫之間複製資料,則指定要從中複製資料的表,或提供用來選擇資料的SQL 語句。
實驗內容:
1、將SQL Server資料匯出到Excel中
2、將Access資料匯入到SQL Server中
實驗步驟:
********將SQL Server資料匯出到Excel中************
例如:將資料庫mysel中的mytable中的Name和Salary>4000資料匯出到一個名為mytable_excel中
clip_image049
 
資料來源選擇SQL Native Client 伺服器名稱選擇本地伺服器,並且使用Windows身份驗證,也可以使用混合模式身份驗證,資料庫選擇mysql
clip_image051
 
目標資料選擇Microsoft Excel,並通過瀏覽指向需要匯出到的那個excel表格。
clip_image053
 
由於不是全部匯出,需要通過命令列對資料庫中的表進行賽選。
clip_image055
 
輸入語句select name,salary from myatable where salary >4000,意思就是將表mytable中name和salary>4000的資料匯出來。寫完語句之後,最好通過分析驗證一下。然後再執行一下看看是否是你想要的結果,如果不是再返回上一步繼續操作。
clip_image057
clip_image059
clip_image061
clip_image063
 
下面是匯出的資料,完全符合標準。
clip_image065
 
*******************將Access中資料匯入到SQL Server中***************************
例如:將Access資料庫mytable_access中的資料匯入到SQL Server資料庫mysql中的test表中。
下面是源資料
clip_image067
clip_image069
 
源資料選擇Microsoft Acces,並瀏覽到源資料檔案即可。
clip_image071
 
目標資料選擇SQL Native Client即可,資料庫選擇mysql
clip_image073
clip_image075
 
如果源資料和目標資料有差異,做一個列對映,在SQL Server中列名最好用英文字母表示。並先前在SQL Server資料庫mysql中建立一張與Access資料庫同名的表。匯入之後,資料就匯入到那張同名的表中。
clip_image077
clip_image079
clip_image081
 
6、 使用SSIS包設計器對資料進行轉換(推薦使用)
使用SSIS設計器可以將先前做的匯入和匯出以及其它操作做成一個包的形式存放,需要匯入或者匯出資料時,只需要將包執行一次就可以了,而且轉換速度是先前速度的7倍。
簡單瞭解一下包的概念:包是一個集合,其中可包括連線、控制流、資料流、事件處理程式、變數和配置,可以使用SSIS工具將這些物件組合到包中。包是最重要的Integration services物件。
*******************將SQL Server資料匯出到Excel中******************************
例如:將資料庫mysql中的資料庫mytable匯出到一個名為newtest.xls中
開啟開發工具SQL Server Business Interlligence Development Studio.lnk。,然後新建一個專案。
clip_image083
 
在解決方案資源管理中選擇“資料來源”,新建一個資料來源,如果哦解決方案資源管理器未出現,單擊選單欄中的“檢視”—》“解決方案資源管理器”
clip_image085
clip_image087
 
為mysql資料來源建立連線管理器,在連線管理器視窗中,單擊滑鼠右鍵,選擇“從資料來源新建連線”。
clip_image089
clip_image091
 
建立資料流任務,在包設計視窗中單擊“控制流”標籤。在工具箱中選擇“資料流任務”並拖動到包設計器視窗。然後單擊“控制器”標籤,選擇“工具箱“中的””“資料流源”,然後選擇“OLE DB源”,並拖動到包設計器視窗。
clip_image093
 
在包設計視窗中選擇“OLE DB源”,單擊滑鼠右鍵,選擇“編輯”,在彈出的對話方塊中指定下列表
clip_image095
 
然後,選擇“工具箱”中的“資料流轉換”,選擇“派生列”並拖動到包設計視窗。在包設計視窗拖動“OLE DB源”的綠色連線到“派生列”。
然後在工具箱中選擇“資料庫目標裡的“平面檔案目標”並拖動到包設計視窗。在包設計視窗中拖動“派生列”的綠色連線到“平面檔案目標”然後編輯,如下圖所示:
clip_image097
 
在目標編輯器中選擇“對映”並將mytable表中的列對映到ACCESS表中。
clip_image099
 
設定完成之後,可以先測試一下,然後保持。
clip_image101
 
儲存的SSIS包在下面路徑裡,需要時,雙擊這個包就可以了
clip_image103
clip_image105
 
下面是SQL SERVER裡的mysql裡的表mytable轉換成Access表的結果。
clip_image107
 
*******將Access中資料匯入到SQL Server中*******
例如:將Access資料庫mytable_access中的資料匯入到SQL Server資料庫mysql中的xiaonuo表中。
做法與上面基本相同。這裡就不做過多演示了。
clip_image109
clip_image111
clip_image113


本文轉自凌激冰51CTO部落格,原文連結:http://blog.51cto.com/dreamfire/155126,如需轉載請自行聯絡原作者

相關文章