SQL Server資料庫中匯入匯出資料及結構時主外鍵關係的處理

來源:互聯網
上載者:User

標籤:

2015-01-26

  軟體開發中,經常涉及到不同資料庫(包括不同產品的不同版本)之間的資料結構與資料的匯入匯出。處理過程中會遇到很多問題,尤為突出重要的一個問題就是主從表之間,從表有外檢約束,從而導致部分資料無法匯入。

 

  情景一、同一資料庫產品,相同版本

  此種情況下來源資料庫與目標資料庫的資料結構與資料的匯入匯出非常簡單。

方法1:備份來源資料庫,恢複到目標資料庫即完成。

方法2:使用SQL Sever資料庫內建的【複製資料庫】功能或者【匯入資料】功能按照嚮導操作即可。

 

  情景二、同一資料庫產品,不同版本

          情景1、來源資料庫版本低,目標資料庫版本高

        此種情況處理方式同情景一。

          情景2、來源資料庫版本高,目標資料庫版本低

        由於目標資料庫版本低於來源資料庫,來源資料庫中產生的指令碼架構無法相容低版本,所以不能通過直接備份還原的方式來操作。

 

  本文以SQL Server2008R2資料庫為資料來源、SQL2008 Express為目標資料庫為例主要解決主從表之間,從表有外檢約束時,資料匯入失敗的問題。操作過程分為以下幾個步驟:

  步驟1:從來源資料庫產生資料結構指令碼【不包表含外鍵關係】

 

 

  在資料來源188串連上,右鍵點擊來源資料庫》【任務】》【產生指令碼】

彈出“產生和發布指令碼”

點擊【下一步】按鈕,彈出“簡介”視窗

點擊【下一步】按鈕,彈出“設定指令碼編寫選項”

點擊【進階】按鈕,彈出具體設定視窗【此步驟非常重要

將“編寫外鍵指令碼”的值設定為false,意思是這一步驟產生的資料結構指令碼中不包含表之間的外鍵關係。其他選項根據實際情況設定。

點擊【確定】按鈕,產生指令碼,入。

 將指令碼另存新檔“OriginalDataStructureWithoutFK.sql”。

 

  步驟2:匯入資料結構指令碼至目標資料庫

 

 

  在目標伺服器上建立目標資料庫,命名同來源資料庫名(其他命名也可以)。

選中建立的資料庫,開啟步驟一中儲存的”OriginalDataStructureWithoutFK.sql“指令檔,運行該檔案,運行成功後,目標資料庫中成功建立了表、視圖、預存程序、自訂函數,如

 

 

  步驟3:從來源資料庫建立資料指令碼

 

 

  此步驟中,藉助第三方資料庫外掛程式SqlAssistant,其擁有強大的資料庫擴充功能,本文不做詳細介紹。可以到SqlAssistant官網瞭解更多http://www.softtreetech.com/isql.htm。

選中來源資料庫,點擊右鍵,【Sql Assistant】》【Scripts Data】

 

彈出”Table Data Export” 匯出Table資料視窗

預設選中來源資料庫與所有的表。點擊【Export】按鈕,產生資料指令碼至【建立查詢時段】中

儲存該資料指令碼為“OriginalData.sql”。

  步驟4:匯入資料指令碼至目標資料庫

 

 

對於表中主鍵或者其他設定為int類型,且設定自增長類型的列,需要做以下處理:

SET IDENTITY_INSERT dbo.T_ACL_User ON ;

一般欄位如果是identity的,比如定義的時候nameid identity(1,1)就是說從1開始增長,每次加1,那麼插入一條記錄nameid欄位是不需要手動賦值(一般也不允許)。那麼有時候需要插入自訂值的時候,就設定set identity_insert on;就可以手動插入了。操作完資料插入後,再將其關閉。

 

選中目標資料庫,並開啟步驟3中儲存的“OriginalData.sql”資料指令碼,運行之,成功後,查看資料表

查詢結果可以看出已經成功匯入資料。

設定 SET IDENTITY_INSERT dbo.T_ACL_User Off ;

 

  步驟5:從來源資料庫產生僅包含表外鍵關係的資料結構指令碼

 

 

  步驟與步驟1大致相同,最後一步設定相反

紅色框內,將“編寫外鍵指令碼”設定為True,其他選項與步驟1中設定相反。點擊"確定"按鈕,產生指令碼,另存新檔“OriginalDataStructureOnlyWithFK.sql”。

  步驟6:匯入外鍵結構關係指令碼至目標資料庫

 

 

  選中目標資料庫,開啟步驟5中儲存的“OriginalDataStructureOnlyWithFK.sql”指令檔,運行之,運行成功後,查看錶結構

外鍵已經成功建立。

 

本篇完。

 

 技術研究方向:專註於Web(Mvc)開發架構、WinForm開發架構、項目(代碼)自動化產生器、ORM等技術研究與開發應用

 企業階層專案經驗:編務管理系統、印前管理系統、印務管理系統、圖書銷售管理系統、圖書發行管理系統、圖書館管理系統、

                          資料交換平台、ERP綜合管理平台

 歡迎轉載,請註明文章出處與連結資訊。    如果文章對您有協助,請幫忙推薦,謝謝!  

 撰寫人:張傳寧  http://www.cnblogs.com/SavionZhang                                     

 歡迎加入技術交流群: 427789286   

 

 

 

 

 

 

 

 

 

 

下篇:待續……

SQL Server資料庫中匯入匯出資料及結構時主外鍵關係的處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.