程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server導出導入數據方法

SQL Server導出導入數據方法

編輯:關於SqlServer

一、導出導入SQL Server裡某個數據庫

1.在SQL Server企業管理器裡選中要轉移的數據庫,按鼠標右鍵,選所有任務->備份數據庫。

2.備份 選數據庫-完全,
  目的 備份到 按添加按鈕
  文件名 在SQL Server服務器硬盤下輸入一個自定義的備份數據庫文件名(後綴一般是bak)
  重寫 選重寫現有媒體
  最後按確定按鈕。
  如果生成的備份數據庫文件大於1M,要用壓縮工具壓縮後再到Internet上傳輸。
 
3.通過FTP或者remote desktop或者pcanywhere等方法
  把第二步生成的備份數據庫文件或者其壓縮後的文件傳到目的SQL Server數據庫,如果有壓縮要解壓。
 
4.目的SQL Server數據庫如果還沒有此數據庫,先創建一個新的數據庫;
  然後選中這個新創建的數據庫,按鼠標右鍵,選所有任務->還原數據庫
  還原->從設備->選擇設備->磁盤->添加(找到要導入的備份數據庫文件名)->確定
  還原備份集->數據庫-完全
  最後按確定按鈕。完全的數據庫導入成功了。
  (如果在已經存在的SQL Server數據庫上還原數據庫可能遇到有還有其它人正在使用它而恢復操做失敗,
   可以去看 ->管理->當前活動->鎖/對象->找到數據庫下鎖的進程號->到查詢分析器裡用kill 進程號殺掉這些鎖,
   然後再做還原)

注意:如果在原有的目的SQL Server數據庫上從備份文件(*.bak)還原數據庫
      會把已經存在的表、存儲過程等數據庫對象全部替換成最近這次導入的備份數據庫裡的內容。
     
      如果一定要還原備份文件(*.bak)裡部分數據,需要另外建一個新數據庫,
      其邏輯名稱和數量同備份文件(*.bak)裡數據庫的邏輯名稱和數量一致;
      新數據庫的物理文件名稱取得一定要和備份文件(*.bak)裡數據庫的物理文件不一樣才行。

二、導出導入SQL Server裡某個表

1.沒有防火牆,同一個局域網裡或不在同一個局域網裡,但通過Internet可以互相訪問

  在SQL Server企業管理器裡選中目的數據庫 ,按鼠標右鍵,選所有任務->導入數據->
  彈出數據轉換服務導入/導出向導窗口->下一步->
 
  選數據源-> 數據源(用於SQL Server的Microfost OLE DB提供程序)->
    服務器(可選擇局域網內能訪問到的所有SQL Server服務器,或者直接輸入IP地址)->
    選擇使用Windows身份驗證還是使用SQL Serve身份驗證(輸入數據庫的用戶名和密碼)->
    數據庫(可選擇上面選中SQL Server服務器上所有權限范圍內的數據庫)->下一步->
 
  選擇目的->目的(用於SQL Server的Microfost OLE DB提供程序)->
    服務器(默認為上一步裡選中的導出服務器,也可以選其它局域網內能訪問到的所有SQL Server服務器,或者直接輸入IP地址)->
    目的數據庫(可選擇上面選中SQL Server服務器上所有權限范圍內的數據庫)->下一步->
 
  制定表復制或查詢->選從源數據庫復制表和視圖(也可以選擇用一條查詢指定要傳輸的數據)->下一步->
    選擇源表和視圖->在要導入的表和視圖前面選中源->目的出現同樣的表名(可以手工修改成別的表名)->
    轉換->列映射和轉換裡面可以修改源表和目的表之間字段的對應關系,修改目的表字段的類型和長度等,
    並可以選擇創建目的表,在目的表中增加行,除去並重新創建目的表,啟用標志插入等選項->確定->下一步->
 
  保存、調度和復制包->時間->立即運行(如果要實現隔一段時間自動導出導入數據,選調度DTS包以便以後執行)->
    保存(可以不選)->[ 保存DTS包(如果以後還要轉移這批相同的數據,可以把本次導出導入的內容和步驟保存起來,
    存到SQL Server即可,保存的時候要輸入DTS的包名及詳細描述)->下一步-> ]->完成
 
  正在執行包->圖形界面顯示創建表及插入記錄的步驟和狀態->完成

2.經過防火牆,不在同一個局域網裡

①、導出表裡的數據到文本文件:
    在SQL Server企業管理器裡選中目的數據庫,按鼠標右鍵,選所有任務->
    導入數據->彈出數據轉換服務導入/導出向導窗口->下一步->

    選數據源-> 數據源(用於SQL Server的Microfost OLE DB提供程序)->
      服務器(可選擇局域網內能訪問到的所有SQL Server服務器)->
      選擇使用Windows身份驗證還是使用SQL Serve身份驗證(輸入數據庫的用戶名和密碼)->
      數據庫(可選擇上面選中SQL Server服務器上所有權限范圍內的數據庫)->下一步->

    選擇目的->目的(文本文件)-> 文件名(在自己的電腦硬盤中生成一個自定義的文本文件) ->下一步->

    制定表復制或查詢->選從源數據庫復制表和視圖(也可以選擇用一條查詢指定要傳輸的數據)->下一步->

    選擇目的文件格式->源(選擇要導出的表)->用默認的帶分隔符->選第一行包含有列名稱選項->下一步->

    保存、調度和復制包->時間->立即運行(如果要實現隔一段時間自動導出到文本文件?

〉鞫菵TS包以便以後執行)->
      保存(可以不選)-> [保存DTS包(保存的時候要輸入DTS的包名及詳細描述)->下一步->]->完成
 
    正在執行包->圖形界面顯示表到文本文件的步驟和狀態->完成

    如果生成的文本文件大於1M,要用壓縮工具壓縮後再到Internet上傳輸。

[NextPage]



②、通過FTP或者remote desktop或者pcanywhere等方法把
    第①步生成的文本文件或者其壓縮後的文件傳到目的SQL Server數據庫,如果有壓縮要解壓。

③、把文本文件導入目的SQL Server數據庫
    直接把文本文件導入目的SQL Server數據庫裡跟文本文件同名的新表名時,默認的會把所有字段類型都變成字符串。

    所以我們要這樣做:
    在源SQL Server數據庫上先生成創建表的sql語句

    在SQL Server查詢分析器裡->選中源數據庫裡表名->按右鍵->在新窗口中編寫對象腳本->創建->
      復制下新窗口內創建表名的sql語句

    到目標SQL Server數據庫上查詢分析器裡執行創建表名的sql語句,生成空表結構。
    (如果已經存在這樣的表名,修改建表的sql語句,在表名後面加上導入時間的年月信息,例如table_0113)

    調用導入/導出工具->彈出數據轉換服務導入/導出向導窗口->下一步->

    選數據源-> 數據源(文本文件)->
      文件名(已傳到目的SQL Server數據庫下要導入的文本文件,後綴可以不是*.txt,
      但是常規文本編輯器能打開的文件,文件類型選全部)->下一步->

    選擇文件格式->用默認的帶分隔符->選第一行包含有列名稱選項->下一步->
      制定列分割符->逗號->下一步->

    選擇目的->目的(用於SQL Server的Microfost OLE DB提供程序)->
      服務器(可選擇目標局域網內能訪問到的所有SQL Server服務器)->
      選擇使用Windows身份驗證還是使用SQL Serve身份驗證(輸入數據庫的用戶名和密碼)->
      數據庫(可選擇上面選中SQL Server服務器上所有權限范圍內的數據庫)->下一步->
 
    選擇源表和視圖->修改目的表名為剛才創建的表名->轉換(在目的表中追加行) ->下一步->
    保存、調度和復制包->
      時間->立即運行(如果要實現隔一段時間自動把文本文件導入,選調度DTS包以便以後執行)->
      保存(可以不選)-> [保存DTS包(保存的時候要輸入DTS的包名及詳細描述)->下一步->]->完成
 
    正在執行包->圖形界面顯示文本文件到表的步驟和狀態->完成

    如果要更改導入時間的年月信息的表名,例如table_0113到原來的表名,
    在企業管理器裡把原來的表名改成table_old_0113,table_0113改名成table。
    這會對應用程序裡頻繁訪問的表照成一定的中斷。

注意:源表上的建的索引和主鍵約束不能用上面介紹的1和2方法轉移過來,還需要手工來建索引和主鍵。
      標志種子和not null的約束可以繼承過來。
      導入視圖時會把源視圖裡所有的真實數據導入成一個新表,而不是視圖。

三、SQL Server存儲過程或用戶定義的函數導出導入

1、導出存儲過程或用戶定義的函數成*.sql文件

    在SQL Server企業管理器裡選中源數據庫,
    存儲過程->單選或者多選中要轉移的存儲過程->
    用戶定義的函數->單選或者多選中要轉移的函數->
    按鼠標右鍵,選所有任務->生成SQL腳本->確定->在自己的電腦硬盤中生成一個自定義的*.sql文件->
      保存->正在生成SQL腳本->成功

2、如果目的數據庫經過防火牆,不在同一個局域網裡,
   要通過FTP或者remote desktop或者pcanywhere等方法把第1步生成的*.sql文件傳到目的SQL Server數據庫服務器上。

3、用查詢分析器進入SQL Server目的數據庫,
    從菜單裡選文件->打開->打開查詢文件->選中第1步生成的*.sql文件->點執行查詢的綠色倒三角型快捷鍵->
    查詢窗口裡會出現執行後的消息(有時候可能因為存儲過程和用戶定義的函數之間有一定的依賴關系,會報一些錯。
    最好先執行用戶定義的函數的*.sql文件,再執行存儲過程的*.sql文件)

四、Oracle數據庫裡表導入SQL Server數據庫

1、在目的SQL Server數據庫服務器上安裝ORACLE ClIEnt軟件或者Oracle ODBC Driver.
   在$ORACLE_HOMEnetworkadmintnsnames.ora裡配置Oracle數據庫的別名(service name)。

2、在WIN2000或者win2003服務器->管理工具->數據源(ODBC)->

   系統DSN(本機器上NT域用戶都可以用)->添加->Oracle ODBC Driver->完成->

   data source name 可以自定義,我一般填Oracle數據庫的sid標志,
     description裡可以填Oracle數據庫詳細描述,也可以不填->

   data source service name 填第1步定義的Oracle數據庫別名->OK?

?lt;BR>
   (用戶DSN和文件DSN也可以類似配置,但使用的時候有一些限制)

3、SQL Server的導入和導出數據工具裡->選數據源-> 數據源(其它(ODBC數據源))->
   選第2步在ODBC裡定義的系統DSN source name,用戶名密碼處填寫Oracle系統的用戶名和密碼->
   下一步->選擇目的,選SQL Server數據庫(跟上面第二點講的一致,就不重復了)。

    注意:在Oracle表和SQL Server表之間'轉換'那步很重要,
          可以改變默認的字段數據類型,如image->text,decimal->int

五、SQL Server數據庫裡表導入Oracle數據庫

   方法一.導出目的選通過ODBC數據源裡定義的Oracle數據庫, 注意Oracle裡表名都是大寫的.
      一般在Oracle這邊先生成好表結構,再選擇SQL Server源表往Oracle目的表裡追加數據.
     數據傳輸速度比方法二慢.
  
   方法二.從SQL Server數據庫導入數據到ORACLE數據庫可以選擇用Windows下Oracle9i企業或者個人版數據庫做中轉。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved