大資料量資料庫的簡單備份遷移資料技巧

來源:互聯網
上載者:User

    今天真汗顏啊。。。。由於我的一不小心,我把幾百萬條資料給刪了,囧。客戶的幾年重要資料就這樣沒了,我當時愁的,還好後來找回來了。

對於大資料的操作,大家一定要謹慎操作。

    在SQLServer2005中,想從一個資料庫伺服器遷移一個資料表的資料到另一資料庫伺服器的表中,大家一般會怎麼做呢?

    我先來說說我今天的做法:因為自己的筆記本上沒有裝軟體,不能給大家看了,大家可以自己動手操作下)

    剛開始我利用一種方法,很笨且不安全的,大家引以為戒。

    老大交給我任務了,我一想那麼多資料,總不能一條一條手工插入吧。我思考了一段時間,我決定利用SQLServer的內建工具,右鍵點擊,匯入/匯出資料功能。先用T-SQL語句根據條件式篩選出需要的資料,在一台資料庫伺服器上操作,將查詢出的資料右鍵另存新檔.rpt和.txt格式的檔案。然後在另一個伺服器上匯入這些資料。當我操作前幾個表的資料正常的時候,我還洋洋得意,到了最後一個表時發現匯入的資料再遇到datetime類型時,發現傻眼了,前幾十條資料正常匯入,到了後面的一條資料以後,後面的幾萬條資料導不了了啊,有木有?囧!這是為什麼呢?我檢查了下資料,發現到那條卡殼的資料時,那裡有個null值。嗯???為什麼空就不能匯入了?varchar和datetime類型的區別,我想大家都知道吧。對,問題就出在這。當我們把資料匯出去的時候,那些資料最嚴重的缺點就是少了欄位描述了,全變成了varchar類型了。不信的話,你用匯入工具匯入到一個新表裡試試這裡沒法,大家自己可以試試),你會發現預設的資料都成varchar類型了。悲劇,這個方法遺憾失敗!

正確的做法是:

一、              用T-SQL語句建立一個暫存資料表,這個表和你需要匯出資料表的欄位定義一樣。假設我們要匯出的資料庫表為A,那麼這個暫存資料表叫A_Temp。

 

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131229/1912295212-0.jpg" border="0" alt="" />

 

看T-SQL語句:

 
  1. INSERT  INTO  A_Temp  SELECT  *  FROM  A  WHERE 1 = 1  AND  BeginTime  > ’2012-11-05 00:00:00’ AND BeginTime < ‘2012-11-06 00:00:00’ 

將篩選出來的資料拷貝到A_Temp表中。

 

再在另一個資料庫伺服器上操作:

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131229/19122a516-1.jpg" border="0" alt="" />

 

用T-SQL語句建立一個暫存資料表,這個表和你需要匯出資料表的欄位定義一樣。

 

二、              利用SQLServer匯入匯出工具將22的資料庫表A_Temp匯入到23的資料庫表B_Temp中,現在再將B_Temp表中的資料添加到B表中。這樣就搞定了。

 

 
  1. INSERT  INTO  B  SELECT  *  FROM  B_Temp 

 

 

總結這樣的好處:

1)         可以很清楚明白的知道你要匯出的資料,方便後來維護查詢;

2)         不會出現資料類型對不上的情況,當時是因為自己的粗心大意,在查詢資料的時候把Delete看成了Select執行了,結果導致嚴重的後果,差點就賠錢了啊。汗。。。

3)         思路明確,嚴謹。

 

    好了,今天的總結就到這,學無止境,工作中一定要心細。大家在操作大數量的資料時,每當使用Update、Delete、Insert時一定要考慮好,重新檢查一遍,想想你正在做什嗎?不要一失足成千古恨,到時候悔之晚矣。

本文出自 “On My Way” 部落格,請務必保留此出處http://shuyangyang.blog.51cto.com/1685768/1050935

相關文章

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.