[zt] SQL Server匯出匯入資料方法

tolywang發表於2009-06-23
一、匯出匯入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伺服器上所有許可權範圍內的資料庫)->下一步->選擇目的->目的(文字檔案)-> 檔名(在自己的電腦硬碟中生成一個自定義的文字檔案) ->下一步->制定表複製或查詢->選從源資料庫複製表和檢視(也可以選擇用一條查詢指定要傳輸的資料)->下一步->選擇目的檔案格式->源(選擇要匯出的表)->用預設的帶分隔符->選第一行包含有列名稱選項->下一步->儲存、排程和複製包->時間->立即執行(如果要實現隔一段時間自動匯出到文字檔案,選排程DTS包以便以後執行)->儲存(可以不選)-> [儲存DTS包(儲存的時候要輸入DTS的包名及詳細描述)->下一步->]->完成
  正在執行包->圖形介面顯示錶到文字檔案的步驟和狀態->完成
  如果生成的文字檔案大於1M,要用壓縮工具壓縮後再到Internet上傳輸。
  ②、透過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_HOME/network/admin/tnsnames.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。
  (使用者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企業或者個人版資料庫做中轉。 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-607219/,如需轉載,請註明出處,否則將追究法律責任。

相關文章