天天看點

資料庫轉換

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

<b></b>

<b></b> 

<b>實驗目标:</b><b></b>

1、 使用T-SQL語句對資料進行轉換。

2、 使用備份和還原對資料進行轉換。

3、 使用分離和附加對資料進行轉換。

4、 使用複制對資料進行轉換。(重點講解)

5、 使用SSIS導入和導出向導對資料進行轉換。

<b>6、 </b>使用SSIS包設計器對資料進行轉換<b></b>

<b>實驗步驟:</b><b></b>

注意:下面所有的操作都将對以下表格進行更改

資料庫轉換

<b>4、 </b><b>使用複制對資料進行轉換。</b><b></b>

通過複制可以将資料的多個拷貝分發到公司中的各個伺服器中。通過複制為多台伺服器提供相同的資料,這樣使用者就可以在不同伺服器中通路同樣的資訊,對以一個擁有大量使用者的企業,複制可以分散使用者通路伺服器的負載,進而為每個使用者提供更高品質的服務。

複制可以将資料和資料庫對象從一個資料庫複制和分發到另一個資料庫,然後在資料庫間進行同步,以維持一緻性。使用複制,可以在區域網路和廣域網、撥接上網、無線連接配接和Internet上将資料分發到不同位置以及分發給遠端或移動使用者。

釋出伺服器擁有原始資料的拷貝,通過訂閱,将資料送到分發伺服器,并且由分發伺服器傳遞給訂閱伺服器。

分發資料庫存儲複制狀态資料和有關釋出的資訊,并且在某些情況下為從釋出伺服器向訂閱伺服器移動的資料起着排隊的作用。在很多情況下,一個資料庫伺服器執行個體可以充當釋出伺服器和分發伺服器兩個角色。

訂閱伺服器擁有資料的拷貝,根據所選複制的類型,訂閱伺服器還可以将資料更改傳遞回釋出伺服器或者将資料重新釋出到其他訂閱伺服器。

<b>實驗環境</b>:

在某一個公司裡的mysql資料庫中,有很多應用與銷售資訊記錄表(mytable表)相關聯,作為這家公司的資料庫管理者,為了避免沖突,需要将mysql表複制到一個不同的SQL Server執行個體上,原執行個體中的表用于資料更新,副本則用于查詢分析,并且需要時保持同步更新。

<b>實施步驟:</b><b></b>

1、 首先安裝兩台SQL,如果都在工作組環境下,就用混合模式進行驗證,如果都在域環境下,就用windows域使用者賬戶進行驗證。本實驗是在工作組環境下,為了簡便起見都用SQL Server中的SA使用者進行驗證,實際中,最好不要這樣去做。如何啟用SA賬戶這裡就不做過多介紹了。

首選連接配接到其中一台釋出伺服器上,然後選擇“建立釋出”就可以了,注意:釋出伺服器必須要開啟SQL Server Agent服務。其次,伺服器執行個體必須為本機計算機名稱。

資料庫轉換

選擇其中一個需要釋出的資料庫mysql。

資料庫轉換

<b>釋出類型:</b><b></b>

<b>快照複制</b>—這是最容易進行設定的複制方式,快照複制隻需要周期性地發送資料。當同步發生時,快照複制發送所有資料。不需要去監視資料的修改,但這樣也可能引起資料流量的增加,如:當沒有資料修改時也會發送所有的資料。

<b>事務性複制</b>—與快照複制不同,隻要資料發生改變。事務性複制就将它們發送給訂閱伺服器。這樣可以減少資料複制的流量。事務性複制通常從釋出資料庫對象和資料的快照開始,建立初始快照。當發生複制時,事務日志被發送到訂閱伺服器上,用以保證事務性的一緻性。預設情況下,事務性釋出的訂閱伺服器被視為隻讀,因為更改将不會傳播回釋出伺服器。

<b>合并複制</b>—合并複制允許既可以在釋出伺服器上修改資料,也可以在訂閱伺服器上修改資料,當同步發生時,釋出伺服器的修改和訂閱伺服器的修改被合并在一起。在合并複制中,同一資料可能由釋出伺服器和多個訂閱伺服器進行了更新。是以在合并更新時可能會産生沖突,合并複制提供了多種處理沖突的方法。與事務複制相同,合并複制通常也是從釋出資料庫對象和資料的快照開始,當複制發生時,之後的更改被合并在一起。

為了滿足實驗背景需求,采用“事務性釋出”。

資料庫轉換

選擇需要釋出的表,本實驗選用mytable,注意,選擇的表中必須要有主鍵才可以。

資料庫轉換

可以通過下面的“添加”菜單對需要表中的有效資訊進行篩選,本實驗就不篩選了。

資料庫轉換
資料庫轉換

指定連接配接釋出伺服器的賬戶,本實驗由于在工作組中,是以選用SQL Server内置賬戶。

資料庫轉換
資料庫轉換

給該釋出伺服器命一個名稱。

資料庫轉換
資料庫轉換

釋出建立成功之後,會在本地釋出子目錄裡顯示出釋出的資料庫。

資料庫轉換

通過本機連接配接到另一台SQL Server資料庫執行個體上,通過本地訂閱,訂閱釋出的内容。也可以在另一他SQL Server資料庫上做。

資料庫轉換

選擇“釋出的伺服器”然後通過SA賬号連接配接到釋出伺服器上。訂閱自己需要的釋出内容(在實際環境中可能有多個釋出)。

資料庫轉換

在實際環境中釋出伺服器和分發伺服器一般放在同一個SQL server中,就選擇最上面那個就可以了。

資料庫轉換

添加訂閱伺服器到此清單中,并選擇需要訂閱的伺服器,然後選擇訂閱伺服器中的一個資料庫就可以了。

資料庫轉換

與分發伺服器的連接配接需用模拟程序賬号,這樣做不是很安全,如果是域環境就直接使用域使用者賬戶就可以了,與訂閱伺服器的連接配接,使用訂閱伺服器上的SQL 賬戶,這裡選用SA,實際中,決定不允許使用這個賬戶。

資料庫轉換
資料庫轉換
資料庫轉換
資料庫轉換
資料庫轉換

完成之後,可以在訂閱伺服器的mysql_dingyue資料庫中看到剛才訂閱的表。

資料庫轉換

為了測試友善,在釋出伺服器上修改資料庫mysql中的表mytable,将小諾同志的工資加1000,看訂閱伺服器是否發生變化。

資料庫轉換

使用SQL語句檢視訂閱伺服器資料庫mysql_dingyue的表mytable看小諾的工資是否發生變化。

資料庫轉換

如果測試不成功,可以通過“檢視同步狀态”進行堅持資料庫的狀态。

資料庫轉換
資料庫轉換

<b>5、 </b><b>使用</b><b>SSIS</b><b>導入和導出向導對資料進行轉換。</b><b></b>

導入和導出向導提出了一種從源向目标複制資料的最簡便的方法,可以在多種常用資料格式之間轉換資料,還可以建立目标資料庫和插入表。

可以向下列源中複制資料或從其中複制資料: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&amp;gt;4000資料導出到一個名為mytable_excel中

資料庫轉換

資料源選擇SQL Native Client 伺服器名稱選擇本地伺服器,并且使用Windows身份驗證,也可以使用混合模式身份驗證,資料庫選擇mysql

資料庫轉換

目标資料選擇Microsoft Excel,并通過浏覽指向需要導出到的那個excel表格。

資料庫轉換

由于不是全部導出,需要通過指令行對資料庫中的表進行賽選。

資料庫轉換

輸入語句select name,salary from myatable where salary &gt;4000,意思就是将表mytable中name和salary&amp;gt;4000的資料導出來。寫完語句之後,最好通過分析驗證一下。然後再執行一下看看是否是你想要的結果,如果不是再傳回上一步繼續操作。

資料庫轉換
資料庫轉換
資料庫轉換
資料庫轉換

下面是導出的資料,完全符合标準。

資料庫轉換

*******************将Access中資料導入到SQL Server中***************************

例如:将Access資料庫mytable_access中的資料導入到SQL Server資料庫mysql中的test表中。

下面是源資料

資料庫轉換
資料庫轉換

源資料選擇Microsoft Acces,并浏覽到源資料檔案即可。

資料庫轉換

目标資料選擇SQL Native Client即可,資料庫選擇mysql

資料庫轉換
資料庫轉換

如果源資料和目标資料有差異,做一個列映射,在SQL Server中列名最好用英文字母表示。并先前在SQL Server資料庫mysql中建立一張與Access資料庫同名的表。導入之後,資料就導入到那張同名的表中。

資料庫轉換
資料庫轉換
資料庫轉換

<b>6、 </b><b>使用</b><b>SSIS</b><b>包設計器對資料進行轉換(推薦使用)</b><b></b>

使用SSIS設計器可以将先前做的導入和導出以及其它操作做成一個包的形式存放,需要導入或者導出資料時,隻需要将包執行一次就可以了,而且轉換速度是先前速度的7倍。

簡單了解一下包的概念:包是一個集合,其中可包括連接配接、控制流、資料流、事件處理程式、變量和配置,可以使用SSIS工具将這些對象組合到包中。包是最重要的Integration services對象。

*******************将SQL Server資料導出到Excel中******************************

例如:将資料庫mysql中的資料庫mytable導出到一個名為newtest.xls中

打開開發工具SQL Server Business Interlligence Development Studio.lnk。,然後建立一個項目。

資料庫轉換

在解決方案資源管理中選擇“資料源”,建立一個資料源,如果哦解決方案資料總管未出現,單擊菜單欄中的“視圖”—》“解決方案資料總管”

資料庫轉換
資料庫轉換

為mysql資料源建立連接配接管理器,在連接配接管理器視窗中,單擊滑鼠右鍵,選擇“從資料源建立連接配接”。

資料庫轉換
資料庫轉換

建立資料流任務,在包設計視窗中單擊“控制流”标簽。在工具箱中選擇“資料流任務”并拖動到包設計器視窗。然後單擊“控制器”标簽,選擇“工具箱“中的””“資料流源”,然後選擇“OLE DB源”,并拖動到包設計器視窗。

資料庫轉換

在包設計視窗中選擇“OLE DB源”,單擊滑鼠右鍵,選擇“編輯”,在彈出的對話框中指定下清單

資料庫轉換

然後,選擇“工具箱”中的“資料流轉換”,選擇“派生列”并拖動到包設計視窗。在包設計視窗拖動“OLE DB源”的綠色連接配接到“派生列”。

然後在工具箱中選擇“資料庫目标裡的“平面檔案目标”并拖動到包設計視窗。在包設計視窗中拖動“派生列”的綠色連接配接到“平面檔案目标”然後編輯,如下圖所示:

資料庫轉換

在目标編輯器中選擇“映射”并将mytable表中的列映射到ACCESS表中。

資料庫轉換

設定完成之後,可以先測試一下,然後保持。

資料庫轉換

儲存的SSIS包在下面路徑裡,需要時,輕按兩下這個包就可以了

資料庫轉換
資料庫轉換

下面是SQL SERVER裡的mysql裡的表mytable轉換成Access表的結果。

資料庫轉換

*******将Access中資料導入到SQL Server中*******

例如:将Access資料庫mytable_access中的資料導入到SQL Server資料庫mysql中的xiaonuo表中。

做法與上面基本相同。這裡就不做過多示範了。

資料庫轉換
資料庫轉換
資料庫轉換

本文出自 “【小諾滴網絡技術課堂】” 部落格,請務必保留此出處http://dreamfire.blog.51cto.com/418026/155126

繼續閱讀